Wie tauschen Sie Daten zwischen einem übergeordneten und Gabel-Kind-Prozess in Python?
Ich bin mir ziemlich sicher, würde man dies tun, indem Sie die os.plock(op) - Funktion, aber ich habe keine Ahnung, wie. Auch, wenn es ein besserer Weg gibt, wäre ich dankbar zu erfahren. Code-snippets sind sehr willkommen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Teilprozess ersetzt os.popen, os.system, os.spawn, popen2 und Befehle. Ein einfaches Beispiel für Rohrleitungen wäre:
Können Sie auch ein memory-mapped-Datei mit dem flag=MAP_SHARED für shared memory zwischen Prozessen.
multiprocessing abstracts sowohl Rohre und shared memory und sorgt für eine höhere level-Schnittstelle. Ergriffen von der Verarbeitung, Dokumentation:
Werfen Sie einen Blick auf die multiprocessing Modul neues in python 2.6 (auch verfügbar für frühere Versionen ein pyprocessing
Hier ist ein Beispiel aus den docs illustrieren die Weitergabe von Informationen über ein Rohr zum Beispiel:
Dies ist sehr viel, Python-unabhängig! Es ist ein klassisches Beispiel von Unix interprocess communication. Eine gute option ist die Verwendung
popen()
zum öffnen einer pipe zwischen parent-und child-Prozesse, und die übergabe von Daten/Nachrichten hin und her entlang der Leitung.Werfen Sie einen Blick auf die
subprocess
- Modul, bis die nötigen Leitungen automatisch während der Laichzeit Kind-Prozesse.Haben Sie zwei Möglichkeiten:
os.popen*
imos
Modul, oder verwenden Sie diesubprocess
Modul den gleichen Effekt. Das Python-Handbuch hat Recht-Dokumentation und Beispiele für popen und Teilprozess.Wenn Sie das tun, low-level-Betriebssystem "forking" und wirklich wollen, um zu vermeiden, mit pipes ist es möglich, shared memory-mapped-Dateien sowie. Dies ist nicht annähernd so schön wie mit
subprocess
oderpopen
Rohre, sondern unter anderem auch die Antwort auf Vollständigkeit...Gibt es eine vollständiges Beispiel hier, aber im Grunde können Sie kombinieren die os Datei-handling und mmap Module: