【发布时间】:2016-08-31 01:22:15
【问题描述】:
我想提取当前队列中的所有项目。另一端有另外一个线程不断的往里面放物品,每一个周期我都想获取当前队列中的所有物品。
有什么理由更喜欢:
res = []
while q.qsize > 0 :
res.append(q.get())
或
res = []
while True :
try :
res.append(q.get(block=False))
except Queue.Empty :
break
现在文档明确表示 qsize() > 0 不会阻止队列阻塞获取,但这是否仅在多个线程可以从输出中获取的情况下才成立?
Queue.qsize() 返回队列的大致大小。注意,qsize() > 0 不保证后面的 get() 不会阻塞,qsize()
这是否意味着应始终首选第二种形式? EAFP 和所有这些?另外,调用 q.qsize() 是否有任何费用?它会阻塞队列的另一端以便计数吗?
我想我已经说服自己使用第二种形式,但对我来说似乎不太干净。
【问题讨论】:
标签: python queue multiprocessing python-multiprocessing multiprocess