首页 > 解决方案 > 如何通过同时和顺序运行来加速 python 脚本

问题描述

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

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

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

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

谁能建议这是否会提高我的表现?

标签: pythonperformancegurobi

解决方案


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

  1. 减少线程数
  2. 设置解决方法=1,如果内存紧张,gurobi 建议在此处执行此操作
  3. nodefilestart 参数设置为较小的值

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


推荐阅读