多核上的批处理

abh*_*rni 5 python multiprocessing python-2.7

我想在多个核心上批量处理文件.我有以下场景:

  1. 我有20个文件.
  2. 我有一个函数,它接受一个文件名,处理它并产生一个整数结果.我想将该函数应用于所有20个文件,计算每个文件的整数输出,最后对各个输出求和并打印总结果.
  3. 由于我有4个核心,我只能处理4个文件.因此,我希望一次运行5轮处理4个文件(4*5 = 20).
  4. 那就是我想创建4个进程,每个进程一个接一个地处理5个文件(第一个进程处理文件0,4,8,12,16,第二个进程处理文件1,5,9,13,17等).

我该如何实现这一目标?我很困惑multiprocessing.Pool(),multiprocessing.Process()还有其他各种选择.

谢谢.

Jar*_*red 7

为了证明Pool我要去假设你的工作职能,消耗一个文件名,并产生了一些,被命名work,而且20个文件被标记1.txt,... 20.txt.设置它的一种方法如下,

from multiprocessing import Pool

pool = Pool(processes=4)
result = pool.map_async(work, ("%d.txt"%n for n in xrange(1,21)))
print sum(result.get())
Run Code Online (Sandbox Code Playgroud)

此方法将为您完成步骤3和4的工作.