基于磁盘的字典实现。
项目描述
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 查看哈希值)
关闭
iodict-0.0.8.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a935649906f10271159b08ffe556e44fa06a94f0e6a4bf5897120101b80a9f53 |
|
MD5 | dcaf33b5c6fdddac544556d2ec4cbe16 |
|
BLAKE2b-256 | 52743666b20c1d2f9d74a6811399ed674b603654fe6944560b757f2a720ffab1 |
关闭
iodict-0.0.8-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4eb6cb0c324602c98542a18ac0cc4d8f45cdfb6d26d69cdba33cd9302f223a6b |
|
MD5 | d85f8a04ee9cf2620c1f49fda320f06b |
|
BLAKE2b-256 | f5b62fffcc50cfb74e45254690d19ed69dc9923c43da67a1142b0046eb44c334 |