繁体   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