tqdm и несколько многопроцессорных очередей
Я пытался разобрать строку загрузки для цикла разбора, который я сделал, но потому что я уже использую multiprocessing.queue
Я не смог найти способ сделать tqdm
сотрудничать с моим кодом. Вот что у меня есть.
def get_chunks(input_list,chunk_size):
return [input_list[i:i+chunk_size] for i in range(0, len(input_list), chunk_size)]
def job(chunk, q):
for item in chunk:
for t in find_all(item):
q.put(t)
def find_all(item):
time.sleep(2) #yield info IF found
def output(q):
while True:
info = q.get()
if info is None:
return
with open('file.txt','a') as f:
f.write(info)
if __name__ == '__main__':
chunks = get_chunks(all_urls, 5)
q = mp.Queue()
processes = [mp.Process(target=job, args=(chunk,q)) for chunk in chunks]
for p in processes:
p.start()
sink = mp.Process(target=output, args=(q,))
sink.start()
for p in processes:
p.join()
q.put(0)
sink.join()
Я видел примеры многопроцессорной обработки tqdm
, но ни один, где существующий код также не использует queue
, Как мне обновлять панель загрузки каждый раз, когда запускается find_all?