Python有Queue.PriorityQueue,但我看不到一種方法讓它中的每個值都是唯一的,因爲沒有檢查值是否已經存在的方法(如find(name)或類似方法)。此外,PriorityQueue需要優先保持在價值範圍內,所以我甚至無法搜索我的價值,因爲我也必須知道優先級。您將使用(0.5,myvalue)作爲PriorityQueue中的值,然後它將按元組的第一個元素排序。如何在Python中創建唯一的值優先級隊列?
另一方面,collections.deque類提供了一個函數來檢查一個值是否已經存在,並且在使用中更加自然(沒有鎖定,但仍然是原子的),但是它沒有提供排序的方法優先。
在stackoverflow上有一些heapq的實現,但heapq也在值中使用了優先級(例如在一個元組的第一個位置),所以它對於已經存在的值的比較似乎不是很好。
Creating a python priority Queue
https://stackoverflow.com/questions/3306179/priority-queue-problem-in-python
什麼是創建一個原子優先級隊列的最佳方式具有唯一值(=可從多個線程中使用)?
例想什麼我補充:
- 優先級:0.2,值:VALUE1
- 優先級:0.3,值:VALUE2
- 優先級:0.1,值:值3(應檢索首先自動)
- 優先級:0.4,值:數值(不得再次添加,即使它有不同的優先級)
我會建議不要使用內置函數的名字,比如'self.set' – sleepsort 2013-11-28 07:21:25
也許流行是獲得更好的名字: ) – DikobrAz 2014-08-20 10:10:55