[英]Running Python script parallel
我有一個巨大的視頻數據集,我使用名為process.py
的python腳本process.py
。 問題是處理包含6000個視頻的所有數據集需要花費大量時間。 所以,我想出了這個分集例如為4和復制相同的代碼,以不同的Python腳本(如的想法process1.py
, process2.py
, process3.py
, process3.py
),然后運行每一個不同的炮彈與數據集的一部分。
我的問題是,這會給我帶來什么樣的表現嗎? 我有一台10核的機器,所以如果我能以某種方式利用這種多核結構將是非常有益的。 我聽說過Python的multiprocessing
模塊,但遺憾的是,我對它並不了解,而且考慮到我會使用它的功能,我沒有寫我的腳本。 是不是在不同的shell中啟動每個腳本的想法? 有沒有辦法選擇每個腳本使用哪個核心?
multiprocessing
文檔( https://docs.python.org/2/library/multiprocessing.html )實際上很容易理解。 本節( https://docs.python.org/2/library/multiprocessing.html#using-a-pool-of-workers )應該特別相關
您絕對不需要同一腳本的多個副本。 這是您可以采用的方法:
假設它是現有腳本( process.py
)的一般結構。
def convert_vid(fname):
# do the heavy lifting
# ...
if __name__ == '__main__':
# There exists VIDEO_SET_1 to 4, as mentioned in your question
for file in VIDEO_SET_1:
convert_vid(file)
通過multiprocessing
,您可以在單獨的進程中觸發convert_vid
函數。 這是一般方案:
from multiprocessing import Pool
def convert_vid(fname):
# do the heavy lifting
# ...
if __name__ == '__main__':
pool = Pool(processes=4)
pool.map(convert_vid, [VIDEO_SET_1, VIDEO_SET_2, VIDEO_SET_3, VIDEO_SET_4])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.