我已经了解了Python多进程的管道/队列/共享ctypes对象/管理器,我想将它们与Linux的匿名管道,命名管道,共享内存,套接字和等等。我现在有以下问题
Python的多处理管道和队列模块基于匿名管道。它是否提供命名管道?
Python multiprocessing.sharedctypes是否支持独立进程 通讯?我认为它只支持父子过程或 兄弟般的过程沟通。
其中哪一项仅用于亲子关系或 兄弟情谊,可以在独立进程之间进行沟通 或不同的主人?
他们各自的特点是什么,我应该如何选择?
提前致谢。
答案 0 :(得分:4)
您的问题非常广泛,大多数答案都可以在multiprocessing
模块文档中找到。
以下是一个简短的回答。
multiprocessing.sharedctypes模块提供了从共享内存中分配ctypes对象的函数,这些函数可以由子进程继承。
您不能在不具有父/子关系的流程中使用multiprocessing.sharedctypes
功能。
AF_INET
套接字系列可以在不同的主机上使用。不过,我建议不要这样做。而是使用网络套接字或其他一些抽象机制。 Python multiprocessing
模块最初是在threading
API上实现的。到目前为止,它在支持的功能方面有所增长,但核心理念仍然保持不变。 multiprocessing
模块旨在处理Python进程系列。对于任何其他用途,subprocess
模块是更好的选择。
为了在多个主机上分配任务和作业,有更好的解决方案来抽象低级基础架构。您可以查看Python项目,例如Celery或Luigi或更复杂的基础架构,例如Apache Mesos。