跳转到主要内容

持久(基于磁盘)和非持久(基于内存)队列的集合

项目描述

https://img.shields.io/pypi/v/queuelib.svg https://img.shields.io/pypi/pyversions/queuelib.svg https://github.com/scrapy/queuelib/actions/workflows/tests.yml/badge.svg Coverage report

Queuelib是一个Python库,它实现了存储在内存中或持久化到磁盘的对象集合,提供了简单的API,并且运行速度快。

Queuelib提供了队列(FIFO)、(LIFO)、按优先级排序的队列以及按轮询方式清空的队列。

Queuelib 支持 Python 3.5+ 且无依赖。

安装

您可以通过 Python 包索引(PyPI)或源代码来安装 Queuelib。

使用 pip 安装

$ pip install queuelib

使用 easy_install 安装

$ easy_install queuelib

如果您已下载源码包,可以通过以下命令(以 root 用户身份运行)进行安装:

# python setup.py install

FIFO/LIFO 磁盘队列

Queuelib 提供了 FIFO 和 LIFO 队列实现。

以下是一个 FIFO 队列的示例用法

>>> from queuelib import FifoDiskQueue
>>> q = FifoDiskQueue("queuefile")
>>> q.push(b'a')
>>> q.push(b'b')
>>> q.push(b'c')
>>> q.pop()
b'a'
>>> q.close()
>>> q = FifoDiskQueue("queuefile")
>>> q.pop()
b'b'
>>> q.pop()
b'c'
>>> q.pop()
>>>

LIFO 队列在 API 方面相同,但需要导入 LifoDiskQueue

优先队列

这是一个由多个 FIFO/LIFO 队列(每个优先级一个)组合而成的离散优先级队列。

首先,选择每个优先级要使用的队列类型(FIFO 或 LIFO)

>>> from queuelib import FifoDiskQueue
>>> qfactory = lambda priority: FifoDiskQueue('queue-dir-%s' % priority)

然后使用它实例化优先队列

>>> from queuelib import PriorityQueue
>>> pq = PriorityQueue(qfactory)

然后使用它

>>> pq.push(b'a', 3)
>>> pq.push(b'b', 1)
>>> pq.push(b'c', 2)
>>> pq.push(b'd', 2)
>>> pq.pop()
b'b'
>>> pq.pop()
b'c'
>>> pq.pop()
b'd'
>>> pq.pop()
b'a'

轮询队列

它与优先队列具有几乎相同的接口和实现,但每个元素都必须带有一个(强制)键进行推送。从队列中弹出会按“轮询”方式遍历键。

与优先队列类似实例化轮询队列

>>> from queuelib import RoundRobinQueue
>>> rr = RoundRobinQueue(qfactory)

然后使用它

>>> rr.push(b'a', '1')
>>> rr.push(b'b', '1')
>>> rr.push(b'c', '2')
>>> rr.push(b'd', '2')
>>> rr.pop()
b'a'
>>> rr.pop()
b'c'
>>> rr.pop()
b'b'
>>> rr.pop()
b'd'

邮件列表

有关 Queuelib 的问题,请使用 scrapy-users 邮件列表。

错误追踪器

如果您有任何建议、错误报告或烦恼,请通过我们的问题追踪器报告: http://github.com/scrapy/queuelib/issues/

贡献

Queuelib 的开发在 GitHub 上进行: http://github.com/scrapy/queuelib

强烈鼓励您参与开发。如果您不喜欢 GitHub(出于某种原因),您也可以发送常规补丁。

所有更改都需要测试才能合并。

测试

测试位于 queuelib/tests 目录中。可以使用以下命令使用 nosetests 运行它们

nosetests

输出应类似于以下内容

$ nosetests
.............................................................................
----------------------------------------------------------------------
Ran 77 tests in 0.145s

OK

许可协议

本软件根据 BSD 许可证授权。请参阅顶层发行目录中的 LICENSE 文件以获取完整的许可文本。

版本控制

本软件遵循 语义版本控制

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码发行版

queuelib-1.7.0.tar.gz (13.3 kB 查看散列)

上传时间

构建发行版

queuelib-1.7.0-py2.py3-none-any.whl (13.6 kB 查看散列)

上传时间 Python 2 Python 3

支持