Я использую многопроцессорность в Python 3.7 для запуска нескольких длительных операций. Каждый отдельный процесс занимает пару минут. Я хочу, чтобы индикатор прогресса для каждого отдельного запущенного процесса отображался одновременно. У меня были проблемы с тем, чтобы заставить это работать, поскольку индикаторы прогресса постоянно прыгают и заменяют друг друга в моей текущей тщетной попытке.
Я создаю свои процессы следующим образом:
with Pool(processes=cpu_count()) as pool:
return pool.starmap(_execute_long_running_process, items)
Внутри моей функции _execute_long_running_process
есть цикл for
, который я хочу, чтобы индикатор выполнения отслеживал.
for i in tqdm(list_of_things_to_process, leave=False):
# do a thing
Я полагаю, что моя проблема возникает из-за каждого индикатора выполнения tqdm
, существующего в его собственном процессе, отдельном отосновной процесс. Я не уверен, каким будет обходной путь, чтобы заставить их вести себя так, как я ожидаю, когда у меня есть несколько индикаторов прогресса, каждый из которых обновляется.