Python中优先级队列的修改

Python中优先级队列的修改,python,queue,multiprocessing,priority-queue,Python,Queue,Multiprocessing,Priority Queue,我想实现优先级队列的派生,如下所示。来自队列导入优先级队列的传统优先级队列A la存储数据如下(假设元组的形式为(优先级,值) 如果我有许多工作人员处理队列中的对象,例如10名工作人员运行func(obj),那么我认为工作人员有可能在obj2完成之前开始处理obj3 但是,func(obj)可能会将更多对象放入优先级队列,但只能与函数当前处理的对象具有相同的优先级。。是否有办法确保优先级为N的所有对象都已完成,然后再转到优先级为>N的对象 例如func(obj2)可以将另一个对象插入队列(1,o

我想实现优先级队列的派生,如下所示。来自队列导入优先级队列的传统优先级队列A la
存储数据如下(假设元组的形式为
(优先级,值)

如果我有许多工作人员处理队列中的对象,例如10名工作人员运行
func(obj)
,那么我认为工作人员有可能在
obj2
完成之前开始处理
obj3

但是,
func(obj)
可能会将更多对象放入优先级队列,但只能与函数当前处理的对象具有相同的优先级。。是否有办法确保优先级为N的所有对象都已完成,然后再转到优先级为>N的对象


例如
func(obj2)
可以将另一个对象插入队列
(1,obj2_1)
但是如果另一个工人在
obj2
完成处理之前拿起
obj3
,那么优先级为1的
obj2_1
可能在优先级为2的
obj3
之后完成处理-我想确保优先级为1的所有对象都在优先级为2之前处理,等等

是的,工人可以启动在处理obj2之前处理obj3是可能的。您的要求是可能的,但这会让很多工人闲置,等待所有优先级为1的对象的处理完成,然后再开始处理任何优先级为2的对象。这是一个相当不寻常的要求。您确定必须这样做吗?是的,这是一个不寻常的要求,但是d这是必要的-你知道有什么好的实现吗?除了写一个跟踪当前最高优先级并只允许处理具有相同或更高优先级的项目的包装器之外,没有。这个实现看起来并不特别困难。但我没有做到。
#pseudocode
queue = ((1, obj1), (1, obj2), (2, obj3), (3, obj4) ...)