Python多进程的进程通信

2024-04-26 11:03:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经了解了Python多进程的管道/队列/共享ctypes对象/管理器,我想将它们与Linux的匿名管道、命名管道、共享内存、套接字等进行比较。我现在有以下问题

  • Python多处理的管道和队列模块是基于匿名管道的。它是否提供命名管道?

  • 是Python吗多处理.sharedTypes支持独立流程 沟通?我认为它只支持父子过程或 兄弟般的过程沟通。

  • 哪一个只在亲子鉴定过程中使用 兄弟情谊,可以在独立进程之间进行沟通 或者不同的主人?

  • 他们各自的特点是什么,我应该如何选择?

提前谢谢。在


Tags: 模块对象管理器管道队列进程过程linux
1条回答
网友
1楼 · 发布于 2024-04-26 11:03:35

您的问题非常宽泛,大多数答案都可以在multiprocessing模块文档中找到。在

下面是一个简短的回答。在

  1. multiprocessing Listeners and Clients允许选择命名管道作为传输介质。在
  2. documentation

    The multiprocessing.sharedctypes module provides functions for allocating ctypes objects from shared memory which can be inherited by child processes.

    不能跨没有父/子关系的进程使用multiprocessing.sharedctypes功能。

  3. ManagersListeners and Clients跨不同主机或没有父/子关系的进程工作。AF_INET套接字系列可以跨不同的主机使用。不过,我还是反对。而是使用网络套接字或其他抽象机制。在
  4. 差异和特点在documentation中得到了很好的说明。在

Pythonmultiprocessing模块最初是通过threadingapi实现的。到那时,它在支持的功能上有所增长,但核心思想保持不变。multiprocessing模块用于处理Python进程族。对于任何其他用途,subprocess模块是一个更好的选择。在

对于跨多个主机分配任务和作业,有更好的解决方案来抽象底层基础设施。您可以查看Python项目,如Celery或{a7}或更复杂的基础设施,如Apache Mesos。在

相关问题 更多 >