跳转到主要内容

基于磁盘的字典实现。

项目描述

IODict

iodict 是一个线程安全的对象存储库,完全用Python编写。

字典实现遵循 Dict API,但使用项目的 出生时间 存储项,使用户可以将此数据存储库视为基于文件系统的 OrderedDict

对象存储库中的项使用文件系统属性(如果可用)来存储键和出生时间信息。文件系统属性增强了对象存储库的功能;但是,它们不是必需的。如果xattrs不可用,则使用文件状态来获取文件创建时间。虽然stat可以工作,但在许多情况下,项排序不能保证。

字典使用

import iodict
data = iodict.IODict(path='/tmp/iodict')  # Could be any path on the file system
data["key"] = "value"
data
{'key': "value"}

dir(data)
['__class__',
 '__delattr__',
 '__delitem__',
 '__dict__',
 '__dir__',
 '__doc__',
 '__enter__',
 '__eq__',
 '__exit__',
 '__format__',
 '__ge__',
 '__getattribute__',
 '__getitem__',
 '__gt__',
 '__hash__',
 '__init__',
 '__init_subclass__',
 '__iter__',
 '__le__',
 '__len__',
 '__lt__',
 '__module__',
 '__ne__',
 '__new__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__setattr__',
 '__setitem__',
 '__sizeof__',
 '__str__',
 '__subclasshook__',
 '__weakref__',
 '_db_path',
 '_encoder',
 '_lock',
 'clear',
 'copy',
 'fromkeys',
 'get',
 'items',
 'keys',
 'pop',
 'popitem',
 'setdefault',
 'update',
 'values']

当在多进程/多线程应用程序中运行时,需要传递一个锁到 iodict 类。

import threading

import iodict
data = iodict.IODict(path='/tmp/iodict', lock=threading.Lock)

默认情况下,如果没有提供锁,将创建一个多进程锁。

锁对象允许 iodict 尊重执行应用程序的锁定范式。

持久队列使用

DurableQueue 类用于创建一个基于磁盘的队列,该队列实现了标准的 queue.Queue API。

import iodict
q = iodict.DurableQueue(path='/tmp/iodict')  # Could be any path on the file system
q.put("test")
data = q.get()
data
'test'

具有刷新能力的队列使用

FlushQueue 类用于扩展标准队列对象的功能,通过提供可以用于将队列中的对象刷新到磁盘的扩展。这在应用程序需要停止或以其他方式停止工作,但需要保存和稍后恢复正在执行的过程时非常有用。

import queue

import iodict


class NewQueue(queue.Queue, iodict.FlushQueue):
    def __init__(self, path, lock=None, semaphore=None):
        super().__init__()
        self.path = path
        self.lock = lock
        self.semaphore = semaphore


q = NewQueue(path='/tmp/iodict')  # Could be any path on the file system
q.put("test")
q.qsize()
1
q.flush()
q.qsize()
0
q.ingest()
q.qsize()
1
q.get()
'test'

项目详情


下载文件

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

源代码分发

iodict-0.0.8.tar.gz (10.5 kB 查看哈希值)

上传日期 源代码

构建分发

iodict-0.0.8-py3-none-any.whl (11.0 kB 查看哈希值)

上传日期 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面