Я хочу исследовать многопроцессорность. У меня есть «tar» архив, скажем, с 1000 файлами (на самом деле файлов гораздо больше), и каждый файл имеет 1000 строк. Мне нужно прочитать каждый файл и каждую строку файла. Мне нужно вернуть и сохранить информацию о каждом файле в некоторой переменной «result» (dictionary). У меня есть следующий код, и по какой-то неизвестной причине он останавливается после 8 итераций:Python Multiprocessing. Архив Loop с файлами
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()
«для файла в self.tar» сделать только 8 итераций. Что я делаю неправильно?
мощность не большой. Thx для советов. Попробуем и реализуем их. – Andrew