簡體   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