Я хочу контролировать прогресс среди нескольких работников, которые являются разными процессами. Для каждого подпроцесса у меня есть собственный панель хода прогресса, но он работает должным образом с ProcessPoolexeCutor < /code> Исполнитель. < /P>
def main():
with futures.ProcessPoolExecutor(max_workers=PROCESSES) as executor:
fut_to_num = {}
for i in range(PROCESSES):
fut = executor.submit(execute_many_threads, i)
fut_to_num[fut] = i
for future in futures.as_completed(fut_to_num):
r = future.result()
# print('{} returned {}'.format(fut_to_num[future], r))
print('\nDone!\n')
def execute_many_threads(n_pool=0):
with futures.ThreadPoolExecutor(max_workers=THREADS) as executor:
for i in range(THREADS):
executor.submit(execute_thread, n_pool, i)
return n_pool+1
def execute_thread(n_pool=0, n_thread=0):
s = random.randint(1, 5)
thread_num = n_pool*(PROCESSES-1) + n_thread
progress = tqdm.tqdm(
desc='#{:02d}'.format(thread_num),
position=thread_num,
total=10*s,
leave=False,
)
# print('Executing {}: {}...'.format(thread_num, s))
for i in range(s):
time.sleep(1)
progress.update(n=10)
progress.close()
return s
< /code>
При замене на ThreadPoolexeCutor < /code> (вторая строка) Все работает должным образом, поэтому я предполагаю, что это может быть связано с некоторой проблемой сериализации. Не могли бы вы помочь выяснить правильный вызов TQDM < /code> при использовании многопроцессы. < /P>
python --version
Я хочу контролировать прогресс среди нескольких работников, которые являются разными процессами. Для каждого подпроцесса у меня есть собственный панель хода прогресса, но он работает должным образом с ProcessPoolexeCutor < /code> Исполнитель. < /P>
[code]def main(): with futures.ProcessPoolExecutor(max_workers=PROCESSES) as executor: fut_to_num = {} for i in range(PROCESSES): fut = executor.submit(execute_many_threads, i) fut_to_num[fut] = i
for future in futures.as_completed(fut_to_num): r = future.result() # print('{} returned {}'.format(fut_to_num[future], r)) print('\nDone!\n')
def execute_many_threads(n_pool=0): with futures.ThreadPoolExecutor(max_workers=THREADS) as executor: for i in range(THREADS): executor.submit(execute_thread, n_pool, i) return n_pool+1
progress = tqdm.tqdm( desc='#{:02d}'.format(thread_num), position=thread_num, total=10*s, leave=False, ) # print('Executing {}: {}...'.format(thread_num, s)) for i in range(s): time.sleep(1) progress.update(n=10) progress.close() return s < /code>
При замене на ThreadPoolexeCutor < /code> (вторая строка) Все работает должным образом, поэтому я предполагаю, что это может быть связано с некоторой проблемой сериализации. Не могли бы вы помочь выяснить правильный вызов TQDM < /code> при использовании многопроцессы. < /P>
python --version[/code] IS Python 3.7.2 и tqdm == 4.31.1 , Ubuntu 18.04
Я пытаюсь использовать планку TQDM для отслеживания прогресса клиента документа AI для извлечения текста, теперь я хочу проверить его, чтобы я мог отобразить это на пользовательском интерфейсе, или их любой другой способ сделать панель прогресса или...
Я пытаюсь использовать планку TQDM для отслеживания прогресса клиента документа AI для извлечения текста, теперь я хочу проверить его, чтобы я мог отобразить это на пользовательском интерфейсе, или их любой другой способ сделать панель прогресса или...
У меня есть простой вопрос: как мне изменить встроенную функцию Python Logger на TQDM.Write так, чтобы сообщения журнала не мешают панерам выполнения TQDM?
У меня возникают проблемы с получением значений, которые я толкаю в массив своих карт. Я не знаю, если я не называю правильным свойством или просто неправильно добавляю в массив.