python multiprocessing apply_async używa tylko jednego procesu
Mam skrypt, który obejmuje otwarcie pliku z listy, a następnie zrobienie czegoś z tekstem w tym pliku. Korzystam z przetwarzania wieloprocesorowego Pythona i puli, aby spróbować zrównoważyć tę operację. Abstrakcja skryptu jest poniżej:
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()
Gdy to uruchomię, wydruk identyfikatora procesu jest taki sam dla każdej iteracji. Zasadniczo to, co próbuję zrobić, to wziąć każdy element listy wejściowej i rozdzielić go na oddzielny proces, ale wygląda na to, że jeden proces wykonuje całą pracę.