在 python 中寻找 IPC 的有效解决方案时,我偶然发现了 zeromq;我有几个 python 进程需要对来自主进程中的 dict 的数据进行一些 cpu 密集型处理。这些工作进程只从字典中读取,只有主进程可以更改字典。dict 中的数据会发生变化,但会通过主进程原子地发生变化。
理想情况下,我有一块共享内存,所有工作进程都可以从中读取字典,不幸的是,这在 python 中似乎是不可能的。
使用像 redis 或 memcache 这样的缓存听起来有点矫枉过正(不想使用 TCP 和酸洗来分享我已经在内存中以本机格式存在的东西)..
因此,作为替代方案,我想使用 zeromq 将相关数据从主 dict 推送到使用 zeromq IPC 套接字的订阅工作者。这意味着我(不幸的是)必须从主 dict 序列化相关部分(使用 msgpack?),然后使用 zmq 消息推送它。我读到可以使用零拷贝来做到这一点,这样我就不会最终复制数据两次,如果我在我的 msgpacked 二进制字符串上使用 copy=False 会自动发生这种情况吗?这是解决我的问题的方法还是你们有提示如何更有效地解决这个问题?
谢谢!
马汀