Skip to main content
 首页 » 编程设计

python之使用 pyzmq 通过 zeromq 套接字快速传输 python 字典和列表的选项有哪些

2025年05月04日7kerrycode

我一直在使用 zeromq REQ/REP TCP 套接字在我的应用程序中的线程之间进行通信,以便将来我可以轻松地从线程迁移到多机器的分布式架构。

我会定期发送大量的听写列表。总的来说,我指的是数万到数十万个字典长度的列表,其中字典由少于 10 个字符的键字符串组成,值是由少于 100 个字符的字符串和一个日期时间对象组成。

我的问题是,由 pyzmq 的 send_pyobj 和 recv_pyobj 完成的 pickling 非常耗费 CPU 和时间,达到了无法工作的程度。

我目前最好的理解是,这是一个序列化问题,而不是传输协议(protocol)问题,因此从 TCP 切换到 IPC 或 inproc 应该不会产生任何明显的差异。

请您参考如下方法:

作为stated in the docs关于send_pyobj 和recv_pyobj:

These methods designed for convenience, not for performance, so developers who do want to emphasize performance should use their own serialized send/recv methods.

看看how to create your own serialization methods .

您也可以批量发送数据(如果您在开始处理数据之前不需要所有 数据)。发送批处理还可以提高性能,因为序列化与反序列化同时发生。