簡體   English   中英

同時運行幾個python程序

[英]Run several python programs at the same time

我有python腳本run.py

def do(i):
    # doing something with i, that takes time

start_i = sys.argv[1]
end_i = sys.argv[2]
for i in range(start_i, end_i):
    do(i)

然后我運行這個腳本:

python run.py 0 1000000

30分鍾后腳本完成。 但是,這對我來說太長了。

所以,我創建了bash腳本run.sh

python run.py 0 200000 &
python run.py 200000 400000 &
python run.py 400000 600000 &
python run.py 600000 800000 &
python run.py 800000 1000000

然后我運行這個腳本:

bash run.sh

6分鍾后腳本完成。 相當不錯。 我很高興。

但我認為,還有另一種解決問題的方法(不創建bash腳本),不存在嗎?

您正在尋找多處理包,尤其是Pool類:

from multiprocessing import Pool
p = Pool(5)  # like in your example, running five separate processes
p.map(do, range(start_i, end_i))

除了將其整合到一個命令中之外,這還有其他優點,比調用python run.py 0 200000 &等等。如果某些進程比其他進程花費的時間更長(因此, python run.py 0 200000可能先完成其他進程),這將確保所有5個線程繼續工作,直到所有線程完成。

請注意,根據計算機的體系結構,同時運行太多進程可能會降低所有進程的速度(對於初學者來說,這取決於處理器具有多少核心,以及您同時運行的其他內容)。

你可以讓你的python程序創建獨立的進程,而不是bash做它,但這沒有太大的不同。 您發現缺陷的解決方案是什么?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM