支持任务分类的优先级队列
taskq的Python项目详细描述
支持任务分类的优先级队列
概述
taskq是一个基于堆的优先级队列,它将支持添加到 将任务划分为多个类别以进行选择性删除。
项目的主要驱动程序是工作/任务队列,其中作业 需要分配给具有不同能力和 非均匀处理时间(用于计算有效预取)。
此库不是线程安全的,不打算用作替换 对于python的queue.queue类。
开始
使用pip:
安装pip install taskq
基本fifo用法:
>>> from taskq import Queue >>> q = Queue() >>> q.push('task1') >>> q.push('task2') >>> q.pop() 'task1' >>> q.pop() 'task2'
任务优先级(也支持定义cmp的复杂类型):
>>> from taskq import Queue >>> q = Queue() >>> q.push('task1', 2) >>> q.push('task2', 1) >>> q.pop() 'task2' >>> q.pop() 'task1'
多重流行:
>>> from taskq import Queue >>> q = Queue() >>> q.push('task1') >>> q.push('task2') >>> q.push('task3') >>> q.pop(2) ['task1', 'task2']
任务类别:
>>> from taskq import Queue >>> q = Queue() >>> q.push('task1', category='foo') >>> q.push('task2', category='bar') >>> q.push('task3', category='foo') >>> q.pop(2, categories=['dog', 'foo']) ['task1', 'task2']
分类比率:
>>> from taskq import Queue >>> q = Queue() >>> q.push('task1', category='foo') >>> q.push('task2', category='bar') >>> q.push('task3', category='foo') >>> q.pop(2, categories=['bar', 'foo'], ratios=[1, 0.5]) ['task1', 'task2', 'task3']
当预取/分发具有 非均匀加工持续时间。如果类别比率代表 平均持续时间为秒,计数可用于近似拉动。 计算队列中优先级最高的任务的秒数。
有关其他功能示例,请参见源文档。
问题
taskq的源代码托管在GitHub上。任何错误报告或功能 可以使用github的issues system发出请求。