Я пишу скрипт на Python 3.7, который запускает несколько параллельных задач, используя multiprocessing.Process
(задача на ядро).Чтобы отследить прогресс для каждого процесса, я использовал библиотеку tqdm
, которая реализует индикатор выполнения.Мой код выглядит следующим образом:
with tqdm(total=iterator_size) as progress_bar:
for row in tqdm(batch):
process_batch(batch)
progress_bar.update(1)
Индикатор выполнения действительно обновляется соответствующим образом, но, поскольку несколько процессов запускают приведенный выше код, каждый перезаписывает панель на консоли, как показано на снимке экрана ниже.
По окончании консоль правильно отображает заполненные индикаторы выполнения:
Моя цель - обновлять индикаторы выполнения, не перезаписывая друг друга.Есть ли способ, которым я могу достичь этого?
Возможное решение будет состоять в том, чтобы отображать только индикатор выполнения процесса, который займет больше всего времени (я знаю заранее, какой из них), но лучшийСценарий может быть один для каждого процесса обновления в соответствии со вторым образом.
Все решения онлайн адрес multiprocess.Pool
, но я не планирую менять свою архитектуру, так как я могу получить максимальную отдачуmultiprocess.Process
.