高效的Python到Python进程间通信

32 投票
5 回答
35717 浏览
提问于 2025-04-17 04:42

什么是一个进程间通信(IPC)的框架或技术,满足以下要求:

  • 能够在两个Python进程之间传输原生的Python对象
  • 在时间和CPU使用上要高效(内存使用不太重要)
  • 能够在Windows和Linux平台上都能使用
  • 最好能与PyPy兼容

更新 1:这些进程在同一台主机上,并且使用相同版本的Python和其他模块

更新 2:这些进程是由用户独立运行的,彼此之间没有一个进程会启动另一个进程

5 个回答

6

在这段话里,提到了两个工具:execnetPyro。这两个工具都可以用来让 PyPy <-> CPython 之间进行通信。还有其他一些工具,它们来自Python Wiki的并行处理页面,可能也适合用来做类似的事情。

10

可以先使用 multiprocessing 这个库。

如果你需要用到多个CPU,可以看看 celery

21

本地对象在不同的进程之间是不能共享的,因为它们是通过引用计数来管理的。

不过,你可以把这些对象进行“序列化”(也就是把它们转换成一种可以存储或传输的格式),然后通过一些方法来共享,比如使用unix域套接字、内存映射(mmap)、zeromq,或者使用像sqlite3这样的中介工具,它们是专门为多个进程同时访问设计的。

撰写回答