我是 Python 新手,在使用queue.Queue 管理生产者和消费者线程之间的任务的多线程 Python 应用程序中偶尔会遇到停滞问题。有时,应用程序会停止响应。当新项目添加到队列时,生产者会通知消费者,而消费者会等待收到此通知后再访问该项目。
这是我的代码的简化版本:
import threading
import queue
q = queue.Queue()
def producer():
for i in range(5):
item = f"item-{i}"
q.put(item)
print(f"Produced {item}")
with condition:
condition.notify_all()
def consumer():
while True:
with condition:
condition.wait()
item = q.get()
print(f"Consumed {item}")
if item is None:
break
condition = threading.Condition()
prod_thread = threading.Thread(target=producer)
cons_thread = threading.Thread(target=consumer)
prod_thread.start()
cons_thread.start()
prod_thread.join()
q.put(None)
cons_thread.join()
什么原因可能导致了这个问题?