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

    上一篇: Process communication of Python's Multiprocessing

    下一篇: Build promotion: how do you manage dependencies?