在我將一些dict
存儲在Queue.Queue
中的程序中,我必須列出每個條目而不從隊列中刪除它們。現在我用這個代碼片段遍歷條目:爲什麼使用Queue.Queue的雙端隊列被認爲是危險的?
elements = Queue.Queue()
# populate the queue
for elem in list(elements.queue):
# print elem
在Lib/Queue.py
和Lib/collections.py
的代碼,我發現queue
是代理deque
,並在此answer「的Python:Queue.Queue與收藏。提到不直接使用deque
。
有什麼特別的理由不使用deque
?希望有人能詳細闡述一下。
我認爲你誤解了答案。使用'collections.deque'沒有什麼錯,你只是在使用'Queue'對象時不想使用'Queue.deque'。這是Queue對象的內部雙端隊列,你不應該直接操縱它。 – 2014-10-03 22:43:12
這個解釋在你鏈接到的問題中是相當清楚的......如果你只需要一個數據結構,那麼一個雙向轉換就可以了。 – beoliver 2014-10-03 22:43:49
https://docs.python.org/2/library/collections.html#collections.deque – beoliver 2014-10-03 22:46:00