python multiprocessing apply_async verwendet nur einen prozess

Ich habe ein Skript, das das Öffnen einer Datei aus einer Liste und das anschließende Bearbeiten des Texts in dieser Datei umfasst. Ich benutze Python Multiprocessing und Pool, um diesen Vorgang zu parallelisieren. Eine Abstraktion des Skripts ist unten:

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

Wenn ich dies ausführe, ist der Ausdruck der Prozess-ID für jede Iteration gleich. Grundsätzlich versuche ich, jedes Element der Eingabeliste in einen separaten Prozess zu zerlegen, aber anscheinend erledigt ein Prozess die gesamte Arbeit.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage