Я пытаюсь отслеживать ход выполнения multiprocess.Pool.imap_unordered
:
from multiprocessing import Pool, Manager, cpu_count
from functools import partial
import tqdm
pbar = tqdm.tqdm()
def wrapper(param1, param2, lock, iter_it, *args, **kwargs):
# Do something here
pbar.update(1)
#Some code here to determine total number of tasks
pool = Pool()
pbar.reset(total=total_num_tasks))
m = Manager()
lock = m.Lock()
func = partial(wrapper, param1, param2, lock)
pool.imap_unordered(func, enumerate(tasks), chunksize=len(unique_coordinates)//cpu_count())
pool.close()
pool.join()
pbar.close()
Это создает панель вывода:
1%|= | 130/13633 [50:29<09:10:59, 2.75it/s]
Но общее количество выполненных задач не t монотонно возрастают. Он колеблется с +/- cpu_count()
. Я думал, что индикатор выполнения монотонно увеличивается, но я заметил, что это не так.
Вот как это выглядит:
![enter image description here](https://i.stack.imgur.com/ZJysn.gif)
Как я могу заставить его монотонно сообщать о ходе работы, если это возможно? Если нет, то что мне нужно изменить?