queue.Queue()。task_done()语法
时间: 2023-12-16 10:05:33 浏览: 95
`queue.Queue()`是Python中的标准队列类,它可以用来实现队列的基本操作,如入队和出队等。`task_done()`是Queue类中的一个方法,用于通知队列,一个线程已经完成了它的任务,可以从队列中移除任务。
在使用队列时,当一个线程完成它的任务后,应该调用`task_done()`方法来通知队列。这样,队列就可以知道哪些任务已经完成,哪些任务还在等待处理。当队列中的所有任务都被标记为完成时,队列会解除阻塞状态,以便程序可以继续执行下一步操作。
下面是一个使用`queue.Queue()`和`task_done()`的示例代码:
```python
import queue
import threading
def worker(q):
while True:
item = q.get()
# 处理任务
print(f"Processing item: {item}")
# 标记任务完成
q.task_done()
q = queue.Queue()
# 创建多个线程
for i in range(5):
t = threading.Thread(target=worker, args=(q,))
t.daemon = True
t.start()
# 添加任务到队列
for item in range(10):
q.put(item)
# 等待队列中的任务完成
q.join()
print("All tasks are done.")
```
在这个示例中,我们创建了一个队列`q`,并启动了5个线程来处理队列中的任务。我们将10个任务添加到队列中,并使用`q.join()`等待队列中的所有任务完成。在每个线程中,我们使用`q.get()`获取队列中的任务,并在处理完任务后使用`q.task_done()`标记任务完成。最后,当所有任务都完成时,程序会输出"All tasks are done."。
阅读全文