我現在正在使用Python 2.7中的多處理和隊列,並嘗試用變量p打印出0到7。當使用while
作爲選項1中顯示的註釋代碼時,它可以工作。但是,如果使用for
和iter()
(如選項2中所示),則會打印0到7,但程序永遠不會退出循環,而必須手動退出。有關如何修改代碼以使循環在打印後正常退出的任何建議?有iter()
,有沒有辦法爲輸入arg p.get
設置block=False
?python循環一個隊列,而不是while
def try_queue():
q = Queue()
for i in range(10):
q.put(i)
p = Queue()
for j in iter(q.get,8):
p.put(j)
# option 1, use while, works.
# while not p.empty():
# print(p.get())
# option 2, use iter()
for k in iter(p.get, None): # None is the sentinel here
print(k)
try_queue()
我在其他地方嘗試過iter(),它的工作原理。只是不知道如何將它與queue.get()函數結合起來。 –
另外,你確定你想使用一個同步隊列嗎?也許你只是想''deque' –
嘗試'在p:do_stuff(k)'中的k並且它報告'TypeError:'Queue'對象不可迭代。 –