2011-11-18 75 views
2

是否可以刪除一個項目並讓多線程隊列在Python中重新排序?從隊列的中間刪除項目?

我有用戶在隊列中排隊,但是當它的時間來處理用戶時,如果用戶斷開連接,這將引發一個問題。

有沒有辦法做到這一點?

感謝

+4

難道你不能只將斷開連接的元素標記爲已死並稍後跳過它而不是即時刪除它? – 6502

+0

是的..我發佈這個問題後我也有了想法,但是我現在還沒有互聯網.. – Pwnna

回答

3

Queue對象沒有提供隨機訪問。但是,您可以通過保留對其他地方的隊列中的對象的引用並將其標記爲過時來實現相同的目標。當從隊列中讀取對象時,消費者可以檢查該對象是否陳舊,如果是,則將其丟棄並再次讀取。

你也可以找到在PriorityQueue類,你把(priority, message),而不是僅僅message到隊列值,並具有最低priority值的數據永遠是下一個,從隊列中讀取。這本身並不能解決您的問題,但它可能會給您一種優先處理最老的請求或類似的方法。