python的magic sync变量
sync_var的Python项目详细描述
magic sync variable for python
本模块着力于实现一种自动同步变量的概念。在多进程编程模式中,同一进程内的某些内存变量经过复杂处理是可以为多个进程内存共享的,这种实现方式复杂而且具有局限性。并且这种实现方式,对于多个python解释器,乃至不同机器之间的进程如何协作,是没办法的。
本模块主要利用redis提供的redlock锁来达到目标变量的读写安全。
from redlock import Redlock dlm = Redlock([{"host": "localhost", "port": 6379, "db": 0}, ]) my_lock = dlm.lock("my_resource_name",1000) dlm.unlock(my_lock)
在目标变量读写安全的基础上,利用redis的pubsub消息信号收发来实现:
本进程存储的变量,redis存储的变量值和其他进程存储的变量值自动同步
local --- redis --- other
对于小规模的数据,利用redis简单读取同步即可,并不需要消息机制,而且消息机制是不可靠的。
但是对于大规模的数据,频繁的读写是很昂贵的一笔开销,而利用消息机制记录列表的append操作就轻便很多。
开发进度
- SimpleVar redlock 锁已经测试通过
- StrSimpleSyncVar 初步测试通过
- ListSimpleSyncVar 初步测试通过
- ListSyncVar 初步测试通过
- TODO 对外接口比如redis等等完善
基于消息的同步机制
基于消息的同步存在了很多额外的校错机制:
- 长度校对 已加入
- 最后一个元素校对 暂时不打算加入
- 最前一个元素校对 暂时不打算加入
如果校对失败,则会启用开销较大完整读写同步