繁体   English   中英

如何通过同时和顺序运行来加速 python 脚本

[英]How to speed up python scripts by running simultaneously & sequentially

我有一个优化程序(目前是一个 jupyter notebook,将优化本身外包给 gurobi 云),我需要运行多次迭代。 到目前为止,我已经尝试在一夜之间同时运行同一脚本的多个版本。 但是,这对我的计算机造成了负担(即,它崩溃了一两次,并且在早上响应非常缓慢)并且似乎导致我的程序在我启动它大约 7 小时后,在它完成之前的某个时间失败。 (该程序不会抛出错误消息;它似乎只是停止产生优化输出。当我尝试减少同时运行时,这种情况似乎更少发生。)

我怀疑我的问题的一部分是我的记忆力变满了。 我想知道如果我并行和按顺序运行我的脚本是否会取得更大的成功,以便清除内存。 不过,我显然是计算机性能方面的新手,因此建议很有帮助。

我目前的情况是这样的:晚上 8 点,我开始并行运行脚本 A 和 B,每个脚本都包含 100 个单独的优化(作为 for 循环的一部分)。 这似乎将所有 100 次优化的输出都保留在内存中,直到早上,这似乎大大降低了我的计算机速度并消耗了大量存储空间(在我重新启动计算机后又是免费的)。

相反,我想知道将 A 拆分为 A1(使用前 50 次优化)和 A2(使用后 50 次优化),将 B 拆分为 B1 和 B2,然后在其中运行 A1 和 B1 是否会提高我的计算机的性能与 A2 和 B2 并行设置为在 A1 和 B1 完成后运行。

任何人都可以就这是否有望提高我的表现提出建议?

我不确定具体的文件拆分,但这里有一些其他的东西可以很好地尝试,

  1. 减少线程数
  2. 设置solve method=1,这是gurobi在这里建议在内存紧张的情况下做的事情
  3. nodefilestart 参数设置为较小的值

然而,这些都是在模型运行时减少内存的事情。 另一件事是减少您存储的模型数量。 这在技术上应该自动发生,但我想我过去已经看到它失败了。 在这种情况下,您可以尝试在循环结束时显式删除您的模型,例如del model ,然后再开始下一个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM