Колеблющийся индикатор выполнения - PullRequest
0 голосов
/ 07 мая 2020

Я пытаюсь отслеживать ход выполнения 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

Как я могу заставить его монотонно сообщать о ходе работы, если это возможно? Если нет, то что мне нужно изменить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...