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操作就轻便很多。

开发进度

  1. SimpleVar redlock 锁已经测试通过
  2. StrSimpleSyncVar 初步测试通过
  3. ListSimpleSyncVar 初步测试通过
  4. ListSyncVar 初步测试通过
  5. TODO 对外接口比如redis等等完善

基于消息的同步机制

基于消息的同步存在了很多额外的校错机制:

  1. 长度校对 已加入
  2. 最后一个元素校对 暂时不打算加入
  3. 最前一个元素校对 暂时不打算加入

如果校对失败,则会启用开销较大完整读写同步

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

推荐PyPI第三方库


热门话题
java将spring j_spring_安全检查迁移到登录   log4j2中自定义appender中AppConfig的java问题   在将java转换为Json时是否可以忽略内部类名和变量   用java将PDF文件转换为十六进制格式   java将值从AsyncTask返回到主类   java如何导入带有部署变量类名的静态函数?   java Spring Boot@ConfigurationProperties未从环境检索属性   java为什么API调用需要80毫秒的延迟才能到达控制器(在Google应用程序引擎中)?   XML配置中MarshallingMessageConverter中的java设置MarshallTo获取无效属性“MarshallTo”   java从群中获取facebook帖子   @ComponentScan的java excludeFilters不起作用   java将单选按钮值从一个类传递到另一个类   java使JTextArea在Swing中可滚动   java Android增强现实应用程序:将球坐标旋转到设备坐标系