本文介绍了为什么这个队列是这样的呢?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在编写一个从多处理队列提取的对象,我发现当我运行这段代码时,我得到data = []。然而,如果我告诉程序在指定的位置休眠一小段时间,我会得到data = [1,2],这是它应该得到的。

from multiprocessing import Queue
import time

q = Queue()
taken = 0
data = []

for i in [1,2]:
  q.put(i)
# time.sleep(1) making this call causes the correct output 
while not q.empty() and taken < 2:
   try:
     data.append(q.get(timeout=1))
     taken+=1
   except Empty:
     continue

**EDIT:**如果While循环之前有一条print语句,也会发生这种情况。这表明对q.put()的调用发生了一些问题,但我找不到有关此问题的任何文档。

推荐答案

在用于多处理的docs中提到。队列

这篇关于为什么这个队列是这样的呢?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-29 22:55