[英]Process communication of Python's Multiprocessing
我已經了解了Python多進程的Pipes / Queues / Shared ctypes Objects / Managers,並且想將它們與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之類的更復雜的基礎結構。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.