有沒有在with
語句中使用Python Queue
的標準方法?這是我想能夠使用它:使用帶有「with」語句的Python隊列
import Queue
myqueue = Queue.Queue()
...
...
...
with myqueue as nextItem:
doStuff(nextItem)
有用於Queue
對象沒有__enter__
或__exit__
方法,所以這是行不通的。有沒有任何語法糖讓它看起來比這更好?
import Queue
myqueue = Queue.Queue()
...
...
...
try:
nextItem = myqueue.get()
doStuff(nextItem)
finally:
myqueue.task_done()
編輯:我有兩個原因,希望在這種情況下,使用with
聲明。首先,我認爲with
聲明可以幫助我的代碼變得更清晰一些,特別是當不止doStuff
的單個調用時。其次,如果有一些簡單的東西,我可以養成習慣於每次使用的習慣,這樣可以確保我永遠不會忘記致電task_done
,或者遇到錯誤可能導致呼叫被跳過的情況,這將是件好事。
我認爲你擁有的是完美的。花你的時間擔心更大的問題。 :) – arshajii
帶'__enter__'和'__exit__'方法的子類隊列?但我真的不認爲這很重要。 – rlms
除非你在玩高爾夫球代碼(你爲什麼這麼做,是否富有成效,而不是迂腐),沒有理由像這樣過度優化。 –