运行Python脚本p

2024-09-27 02:21:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个巨大的视频数据集,我使用一个名为process.py的python脚本处理。问题是,处理包含6000个视频的所有数据集需要很多时间。因此,我想到了将这个数据集划分为4个,并将相同的代码复制到不同的Python脚本(例如process1.pyprocess2.pyprocess3.pyprocess3.py)中,然后用数据集的一部分在不同的shell上运行每个数据集。

我的问题是这会给我带来什么性能方面的东西吗?我有一台10核的机器,所以如果我能利用这种多核结构,那将是非常有益的。我听说了Python的multiprocessing模块,但不幸的是,我对它了解不多,而且我没有编写脚本,因为我会使用它的特性。用不同的外壳开始每个脚本的想法是毫无意义的吗?有没有办法选择每个脚本将使用哪个内核?


Tags: 数据代码py脚本机器利用视频时间
1条回答
网友
1楼 · 发布于 2024-09-27 02:21:54

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]) 

相关问题 更多 >

    热门问题