Мне нужно получать действительно большие куски данных, перебирая данные.Всего мне нужно несколько миллионов итераций.Так что я думал, что сжатие ускорит мой процесс, и это почти так и произошло.Я использую subprocess.Queue
для вызова различных потоков, что на самом деле работает нормально, но когда я вызываю * subprocess.Queue.get () `программе требуется вечность, чтобы получить результаты.Может я что то не так сделал.Вот мой минимальный пример:
def get_losses(self, tags=None):
return_dict = {}
output_list = multiprocessing.Queue()
process_list = []
# Create quese definition
for experiment, path in self.tf_board_dicts.items():
t = multiprocessing.Process(target=self._load_vec_from_tfboard, args=(path, tags, experiment))
process_list.append(t)
print("Starting subprocesse with a total of {} workers. \n These are {}".format(len(process_list),
process_list))
# Run processes
for p in process_list:
p.start()
# Exit the finished threads
for p in process_list:
p.join()
print("All subprocesses are termianted")
# Get results
results = [output_list.get() for p in process_list]
print("All losses are gathered: {}".format([tup[0] for tup in results]))
# Create dict
for experiment_losses in results:
return_dict[experiment_losses[0]] = experiment_losses[1]
return return_dict