Python: das Schreiben auf eine einzige Datei mit dem queue während der Verwendung von multiprocessing Pool

Ich habe Hunderte von tausenden von text-Dateien, die möchte ich analysieren, auf verschiedene Weise. Ich möchte speichern Sie die Ausgabe in eine einzelne Datei ohne Probleme bei der Synchronisierung. Ich habe mit multiprocessing-pool, um dies zu tun, um Zeit zu sparen, aber ich kann nicht herausfinden, wie zu kombinieren, Pool und Warteschlange.

Den folgenden code speichert die infile-name sowie die maximale Anzahl von aufeinander folgenden "x"s in der Datei. Allerdings möchte ich, dass alle Prozesse, Ergebnisse speichern, um die gleiche Datei, und nicht auf verschiedene Dateien, wie in meinem Beispiel. Jede Hilfe auf diesem würde sehr geschätzt werden.

import multiprocessing

with open('infilenamess.txt') as f:
    filenames = f.read().splitlines()

def mp_worker(filename):
 with open(filename, 'r') as f:
      text=f.read()
      m=re.findall("x+", text)
      count=len(max(m, key=len))
      outfile=open(filename+'_results.txt', 'a')
      outfile.write(str(filename)+'|'+str(count)+'\n')
      outfile.close()

def mp_handler():
    p = multiprocessing.Pool(32)
    p.map(mp_worker, filenames)

if __name__ == '__main__':
    mp_handler()
InformationsquelleAutor risraelsen | 2014-10-27
Schreibe einen Kommentar