将多进程用作本地进程间通信
我在考虑使用Python的多进程包来实现本地Python程序之间的消息传递。
如果满足以下条件,这似乎是个不错的选择:
- 这些程序总是在同一台机器上运行(而且是同一个操作系统)
- 这些程序的实现将一直使用Python
- 速度很重要
如果用户独立运行这些Python进程,也就是说一个进程并不是由另一个进程启动的,这样的情况下可以实现吗?
怎么做呢?
文档似乎只给出了一个进程启动另一个进程的例子。
2 个回答
1
这些程序总是在同一台机器上(以及同一个操作系统实例)本地运行。
多进程可以实现远程并发。
这些程序的实现将会保持在Python中。
是的,也不是。你可以把其他命令封装在一个Python函数里。例如,这样做是可以的:
from multiprocessing import Process
import subprocess
def f(name):
subprocess.call(["ls", "-l"])
if __name__ == '__main__':
p = Process(target=f, args=('bob',))
p.start()
p.join()
速度很重要。
这取决于几个因素:
- 进程之间的协调会造成多少额外开销?
- 你的CPU有多少个核心?
- 每个进程需要多少磁盘输入输出?它们是否在同一个物理磁盘上工作?
- ...
如果Python进程是由用户独立运行的,也就是说一个进程没有生成另一个进程,这种情况是否可行?
我不是这个领域的专家,但我曾经实现过类似的功能,通过文件来交换数据[基本上一个进程的输出文件被另一个进程监控作为输入源,反之亦然]。
希望这对你有帮助!
2
查看 监听器和客户端