持久(基于磁盘)队列的集合

queuelib的Python项目详细描述


https://secure.travis-ci.org/scrapy/queuelib.png?branch=masterCoverage report

queuelib是python的持久(基于磁盘)队列的集合。

queuelib的目标是速度和简单性。它最初是Scrapy framework的一部分,并在自己的库中剥离出来。

注意:queuelib不是线程安全的。

要求

  • python 2.7或python 3.3
  • 无外部库要求

安装

您可以通过python包索引(pypi)或 来源。

使用pip安装:

$ pip install queuelib

使用简易安装进行安装:

$ easy_install queuelib

如果您下载了源tarball,可以通过运行 以下(作为根):

# python setup.py install

先进先出/后进先出磁盘队列

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()
>>>

后进先出队列是相同的(按api),但导入LifoDiskQueue 相反。

优先级队列

由多个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'

roundrobinqueue

与优先级队列具有几乎相同的接口和实现,但 每个元素都必须用(强制的)键来推动。从 队列循环通过键“循环”。

以类似于优先级队列的方式实例化循环队列:

>>> 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许可证授权的。请参阅 完整许可证文本的顶级分发目录。

版本控制

这个软件遵循Semantic Versioning

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
用于批量操作的java RESTful API分块响应   java读取在线存储的文本文件   在Java ME中将双精度舍入到小数点后5位   java查找一个数字的最接近因子   java更改JMenuBar的字体   java Kmeans聚类算法运行时间和复杂性   java是否可以阻止try catch返回null   java内容解析器指向具有正确URI的错误表   java Android Kotlin插装测试未被识别为插装测试   java TestNG@Dataprovider   在forloop和print语句中声明变量时发生java错误   java在Android Studio 3中设置JNI