我想实现优先级队列的衍生,如下所示。 la from queue import PriorityQueue
的传统优先级队列将数据存储为以下内容(假设格式为(priority, value)
#pseudocode
queue = ((1, obj1), (1, obj2), (2, obj3), (3, obj4) ...)
如果我有很多工人处理队列中的对象,例如运行func(obj)
的10名工作人员,我认为工作人员可能会在obj3
完成obj2
之前开始处理func(obj)
但是,func(obj2)
可能会将更多对象放入优先级队列,但仅与该函数当前正在处理的对象的优先级相同。有没有办法确保在转移到优先对象之前完成所有优先级为N的对象> N'
例如(1, obj2_1)
可以将另一个对象插入到队列obj3
中,但如果另一个工作人员在obj2
完成处理之前选择obj2_1
,那么obj3
优先级为1可以在优先级为2的metadata_path
之后完成处理 - 我希望确保在优先级2等之前处理所有优先级为1的对象