python queue阻塞
时间: 2023-10-30 14:01:35 浏览: 48
Python中的queue模块提供了一种线程安全的队列实现,即可以用于多线程编程。当队列为空时,get()方法会阻塞直到队列中有可获取的元素。同样地,当队列已满时,put()方法会阻塞直到队列中有可插入的元素。
以下是一个简单的示例,展示了如何使用queue进行阻塞操作:
```python
import queue
import threading
def worker(q):
while True:
item = q.get()
if item is None:
break
# 处理获取到的元素
print("Processing item:", item)
q.task_done()
# 创建一个线程安全的队列
q = queue.Queue()
# 创建并启动多个工作线程
for _ in range(5):
t = threading.Thread(target=worker, args=(q,))
t.start()
# 向队列中放入元素
for item in range(10):
q.put(item)
# 阻塞直到队列中的所有元素都被处理完
q.join()
# 停止工作线程
for _ in range(5):
q.put(None)
```
在上述示例中,我们创建了一个包含5个工作线程的队列,并向队列中放入10个元素。每个工作线程会阻塞等待获取队列中的元素并进行处理。当所有元素都被处理完后,q.join()会阻塞直到队列中的所有元素都被处理完。
希望这个示例对你有所帮助!如有任何疑问,请随时提出。