Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中一个好的持久同步队列_Python_Queue - Fatal编程技术网

python中一个好的持久同步队列

python中一个好的持久同步队列,python,queue,Python,Queue,我现在不关心fifo或filo选项,但将来可能会更好 我要找的是一种很好的快速简单的方法,可以在磁盘上存储(最多一gig的数据或数千万个条目),可以通过多个进程获取和放置。这些条目只是简单的40字节字符串,而不是python对象。并不真正需要的所有功能 我见过这个 看起来很简单。它需要升级到新的队列版本 想知道有没有更好的?我担心在电源中断的情况下,整个pickle文件会损坏,而不仅仅是一条记录。使用文件不起作用 使用日志文件系统从电源中断中恢复。这就是他们的目的。尝试使用。它不是纯python

我现在不关心fifo或filo选项,但将来可能会更好

我要找的是一种很好的快速简单的方法,可以在磁盘上存储(最多一gig的数据或数千万个条目),可以通过多个进程获取和放置。这些条目只是简单的40字节字符串,而不是python对象。并不真正需要的所有功能

我见过这个 看起来很简单。它需要升级到新的队列版本


想知道有没有更好的?我担心在电源中断的情况下,整个pickle文件会损坏,而不仅仅是一条记录。

使用文件不起作用

使用日志文件系统从电源中断中恢复。这就是他们的目的。

尝试使用。它不是纯python,因为它使用RabbitMQ作为后端,但它是可靠的、持久的和分布式的,总之,从长远来看,比使用文件或数据库要好得多。

我认为这就是您想要的。您可以选择队列作为访问类型。PyBSDDB是基于的Python模块。
它具有同步访问,并且可以从不同的进程访问,尽管我不知道从Python绑定中是否可以做到这一点。关于向数据库写入多个进程,我发现。

这是一个非常古老的问题,但似乎是完成此类任务的一个很好的工具

持久队列实现了一个基于文件的队列和一系列 基于sqlite3的队列。目标是实现以下要求:

  • 基于磁盘:每个排队项目都应存储在磁盘中,以防崩溃
  • 线程安全:可由多线程生产者和多线程消费者使用
  • 可恢复:进程重新启动后可以读取项
  • 绿色兼容:可在greenlet或eventlet环境中使用
默认情况下,持久化队列使用pickle对象序列化模块 支持对象实例。大多数内置类型,如int、dict、list都是 可直接由持久队列持久化,支持自定义 对象,请参阅酸洗和解酸洗扩展 类型(Python2)和Pickling类实例(Python3)


如果您知道数据的确切宽度,那么如果延迟不是问题,那么数据库也不是不合理的解决方案。您可以将sqlite用于一个非常简单的解决方案。日志记录有助于保持元数据(而不是数据)的一致性。仅使用普通文件很容易丢失数据。