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

How to speed up python scripts by running simultaneously & sequentially

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

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

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

相反,我想知道将 A 拆分为 A1(前 50 次优化)和 A2(进行后 50 次优化),将 B 拆分为 B1 和 B2,然后再运行 A1 和 B1 与 A2 和 B2 并行设置为 运行 在 A1 和 B1 完成后。

谁能告诉我这是否会提高我的表现?

我不确定 file-splitting 具体是什么,但这里有一些其他值得尝试的东西,

  1. Reduce the number of threads
  2. 设置求解方法=1,this is something that gurobi suggests如果内存紧张这里做
  3. nodefilestart parameter 设置得小一点

当您的模型 运行 时,这些都会减少内存。另一件事是减少您存储的模型数量。这在技术上应该自动发生,但我想我过去曾看到它失败了。在这种情况下,您可以尝试在开始下一个循环之前明确删除您的模型,例如 del model