面试题答案
一键面试import threading
import queue
q = queue.Queue()
def producer():
for i in range(5):
q.put(i)
def consumer():
while True:
if not q.empty():
data = q.get()
print(f"处理数据: {data}")
q.task_done()
else:
break
t1 = threading.Thread(target=producer)
t2 = threading.Thread(target=consumer)
t1.start()
t2.start()
t1.join()
t2.join()
解释:
queue.Queue
是Python标准库中线程安全的队列。producer
函数负责生成数据并放入队列。consumer
函数使用if not q.empty()
判断队列是否有数据,有数据则取出并处理。q.task_done()
用于告诉队列,一个任务已经完成,防止join
阻塞。- 最后启动两个线程并等待它们完成。