Использование tqdm с многопроцессорностью - PullRequest
0 голосов
/ 25 октября 2019

Я использую многопроцессорность в 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, существующего в его собственном процессе, отдельном отосновной процесс. Я не уверен, каким будет обходной путь, чтобы заставить их вести себя так, как я ожидаю, когда у меня есть несколько индикаторов прогресса, каждый из которых обновляется.

...