Я хотел бы выполнить многопроцессорную обработку, используя ОБА TimeoutError и индикатор выполнения tqdm.
Я успешно пробовал их отдельно. Как мне сочетать логику?
Цели:
Я пробовал миллион способов их объединения (не показано). Каждый раз, когда я оборачиваю вызов imap_unordered с помощью tqdm, я не могу получить доступ к методу res.next для тайм-аута.
from multiprocessing import Pool, TimeoutError
from tqdm import tqdm
def runner(obj):
obj.go()
return obj
def dispatch(objs):
with Pool() as pool:
newObjs = list(tqdm(pool.imap_unordered(runner, objs), total=len(objs)))
# need to find a way to integrate TimeoutError into progress bar
# I've tried this a million ways using multiprocessing
# try:
# res.next(timeout=10)
# except TimeoutError:
# raise
return newObjs
Код отлично работает для индикатора выполнения. Необходимо отслеживать, если какой-либо процесс превышает время ожидания.