作成したthreadsで queueを使った処理を始めて、処理が終わる前に、新たなthreadsを追加して、queueにアクセスしたいです。
queue.join()によって、全てのqueueが取り出されるまで処理がブロックされているのですが、queue.join()をつかわないと、そもそもqueueへのアクセスが開始できません。
queueのアクセスを開始できて、その後も終了前にqueueにアクセスするにはどうすればいいのでしょうか?
python
import queue import threading import time def login(queue, driver_num): while True: task = queue.get() time.sleep(2) queue.task_done() print(f'driver{driver_num} : task{task}') queue = queue.Queue() def create_thread(driver_num): thread = threading.Thread(target=login, args=(queue, driver_num,), daemon=True) thread.start() create_thread(1)create_thread(2) f=open('data.txt')data_list=f.read()for data in data_list.split('\n'): if data!='': queue.put(data) queue.join() create_thread(3) f=open('data.txt')data_list=f.read()for data in data_list.split('\n'): if data!='': queue.put(data) queue.join()
result
driver1 : taskA driver2 : taskB driver1 : taskC driver2 : taskD driver1 : taskE driver2 : taskF driver1 : taskG driver2 : taskH driver1 : taskI driver2 : taskJ driver2 : taskL driver1 : taskK driver2 : taskM driver1 : taskN driver2 : taskA driver3 : taskB driver1 : taskC driver2 : taskD driver3 : taskE driver1 : taskF driver2 : taskG driver3 : taskH driver1 : taskI driver2 : taskJ driver3 : taskK driver1 : taskL driver2 : taskM driver3 : taskN
0 コメント