Ich möchte Multiprozessing untersuchen. Ich habe 'tar' Archiv, sagen wir mit 1000 Dateien (tatsächlich gibt es viel mehr Dateien) und jede Datei hat 1000 Zeilen. Ich muss jede Datei und jede Zeile der Datei lesen. Ich muss zurück und speichern Sie Informationen über jede Datei in einigen 'Ergebnis' Variable (Wörterbuch). Ich habe nächsten Code und aus einem unbekannten Grunde hält es nach 8 Wiederholungen:Python Multiprocessing. Loop Archiv mit Dateien
class DataProc():
...
def data_proc(self):
...
result = {}
read_mode = 'r'
self.tar = tarfile.open(file_path, read_mode)
for file in self.tar:
q = Queue()
p = Process(target=process_tar,
args=(file, q))
p.start()
tmp_result = q.get()
for key, item in tmp_result.items():
'''
do some logic and save data to result
'''
pass
p.join()
return result
def process_tar(self, file, q):
output = {}
extr_file = self.tar.extractfile(file)
content = extr_file.readlines()
'''
do some data processing with file content
save result to output
'''
q.put(output)
dp = DataProc()
result = dp.data_proc()
‚für Datei in self.tar‘ machen nur 8 Wiederholungen. Was mache ich falsch?
Ausgabe ist nicht groß. Danke für die Ratschläge. Wird versuchen und sie implementieren. – Andrew