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