リストからファイルを開き、そのファイル内のテキストに対して何かを行うスクリプトがあります。この操作を並列化するために、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 の出力は反復ごとに同じになります。基本的に私がやろうとしているのは、入力リストの各要素を取り出して別々のプロセスにフォークすることですが、1 つのプロセスがすべての作業を行っているようです。