Qua*_*rgy 8 python ipc pipe shared-memory multiprocessing
我已经了解了Python多进程的管道/队列/共享ctypes对象/管理器,我想将它们与Linux的匿名管道,命名管道,共享内存,套接字等进行比较.我现在有以下问题
Python多处理的管道和队列模块基于匿名管道.它是否提供命名管道?
Python multiprocessing.sharedctypes是否支持独立的进程通信?我认为它只支持父子进程或兄弟进程通信.
其中哪些只用于父子关系或兄弟情谊,可以在独立进程或不同主机之间进行通信?
它们各自的特点是什么,我应该如何选择它们?
提前致谢.
您的问题非常广泛,大多数答案都可以在multiprocessing模块文档中找到。
以下是一个简短的答案。
从文档中:
multiprocessing.sharedctypes 模块提供了从共享内存中分配 ctypes 对象的函数,这些对象可以由子进程继承。
multiprocessing.sharedctypes您无法跨没有父/子关系的进程使用功能。
AF_INET系列可以在不同的主机上使用。尽管如此,我还是建议不要这样做。而是使用网络套接字或其他一些抽象机制。Pythonmultiprocessing模块最初是通过threadingAPI 实现的。到那时,它支持的功能有所增加,但核心思想保持不变。该multiprocessing模块旨在处理 Python 进程系列。对于任何其他用途,该subprocess模块是更好的选择。
对于跨多个主机分配任务和作业,有更好的解决方案抽象低级基础设施。您可以查看 Python 项目(例如Celery或Luigi)或更复杂的基础设施(例如Apache Mesos)。