簡體   English   中英

並行運行Python腳本

[英]Running Python script parallel

我有一個巨大的視頻數據集,我使用名為process.py的python腳本process.py 問題是處理包含6000個視頻的所有數據集需要花費大量時間。 所以,我想出了這個分集例如為4和復制相同的代碼,以不同的Python腳本(如的想法process1.pyprocess2.pyprocess3.pyprocess3.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.

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