Python多处理的进程通信
我已经了解了Python多进程的管道/队列/共享ctypes对象/管理器,我想将它们与Linux的匿名管道,命名管道,共享内存,套接字等进行比较。 我现在有以下问题
Python多处理的管道和队列模块基于匿名管道。 它提供命名管道吗?
Python multiprocessing.sharedctypes是否支持独立的进程通信? 我认为它只支持父子进程或兄弟进程通信。
他们中的哪些仅用于亲子关系或兄弟关系的过程中,可以在独立进程或不同主机之间进行通信?
他们各自的特点是什么,我应该如何选择他们?
提前致谢。
您的问题非常广泛,大多数答案都可以在multiprocessing
模块文档中找到。
这里有一个简短的答案。
从文档:
multiprocessing.sharedctypes模块提供了从共享内存中分配ctypes对象的函数,这些对象可以被子进程继承。
不能在不具有父/子关系的进程中使用multiprocessing.sharedctypes
功能。
AF_INET
套接字系列可用于不同的主机。 不过,我会建议反对它。 而是使用网络套接字或其他抽象机制。 Python multiprocessing
模块最初是通过threading
API实现的。 到那时,它在支持的功能上有所增长,但核心思想保持不变。 multiprocessing
模块旨在处理Python进程族。 对于其他用途, subprocess
模块是更好的选择。
为了在多个主机上分配任务和作业,有更好的解决方案可以抽象出低级基础结构。 您可以查看诸如Celery或Luigi等Python项目或更复杂的基础设施(如Apache Mesos)。
链接地址: http://www.djcxy.com/p/41567.html