Ich benutze Python 2.7. Ich habe ein Multithread-Programm, wo die Threads Befehle mit dem Modul subprocess
starten. Die Prozesse werden auf dem System ausgeführt und melden gelegentlich Daten an die Threads. Der Großteil der Arbeit wird in den Prozessen erledigt - die Threads nehmen nur Informationen aus den Prozessen und schreiben sie zum Beispiel in eine Datei.Effizienz der Verwendung von Subprozess in Verbindung mit Threads, in Python
Ich verstehe, dass es Einschränkungen bei der Verwendung von Multithreading mit Python gibt. Aber in diesem Fall erwarte ich, dass das ganze Heavy Lifting vom System (Linux) ausgeführt wird, weil die gestarteten Subprozesse CPU-intensive Sachen machen. Die Fäden müssen also keine Last tragen und sollten daher kein Flaschenhals sein.
Ist mein Verständnis der Verwendung von Threads und Teilprozesse in Python genau? Ich denke, ein grundlegender Teil meines Verständnisses ist, dass diese verschiedenen Teilprozesse auf verschiedenen Kernen laufen können. Selbst wenn die Threads an einen Kern gebunden sind, werden die Prozesse effizient ausgeführt, und die Threads können Informationen von ihnen sammeln, sobald sie verfügbar sind.
Ja, Sie haben Recht. Pythons GIL lässt nur einen Thread gleichzeitig laufen, aber diese Regel gilt nur für den Python-Prozess - alle Subprozesse laufen unabhängig voneinander. Da die Python-Threads meistens nur auf Daten von den Subprozessen warten, stören sie sich nicht gegenseitig. – tdelaney