我有一个脚本,其中包括从列表中打开文件,然后对该文件中的文本执行某些操作。我正在使用Python multiprocessing和Pool尝试并行化此操作。该脚本的一个抽象如下:
import os
from multiprocessing import Pool
results = []
def testFunc(files):
for file in files:
print "Working in Process #%d" % (os.getpid())
#This is just an illustration of some logic. This is not what I'm actually doing.
for line in file:
if 'dog' in line:
results.append(line)
if __name__=="__main__":
p = Pool(processes=2)
files = ['/path/to/file1.txt', '/path/to/file2.txt']
results = p.apply_async(testFunc, args = (files,))
results2 = results.get()
当我运行这段代码时,每次迭代中进程ID的输出都相同。基本上我的目标是将输入列表的每个元素分叉到单独的进程中,但似乎一个进程在处理所有工作。