Python中的优先级队列修改

时间:2017-07-21 18:07:24

标签: python queue multiprocessing priority-queue

我想实现优先级队列的衍生,如下所示。 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的对象

0 个答案:

没有答案