2010-12-21 7 views
3

Was ist die schnellste/effizienteste Methode, um eine ausführbare Datei von Python auszuführen? Es scheint mir, dass os.system schneller als subprocess.popen ist. Ich möchte gerne die Zeilen lesen, die aus diesem anderen Prozess hervorgehen, aber viel wichtiger als alles andere ist Geschwindigkeit.schnellste Möglichkeit, einen Prozess von Python aufzurufen?

+6

Warum ist die Geschwindigkeit wichtig? Wenn Geschwindigkeit so wichtig ist, warum versuchst du Dinge zu erreichen (a), indem du andere Prozesse startest? (b) mit Python? Was versuchst du wirklich? –

+3

Ich zweite Sekunde, was Karl sagte, und: 'Es scheint mir, dass os.system ist schneller als subprocess.popen'. Bist du dir wirklich sicher? Und ist es wichtig? – user225312

+0

Wenn Sie kein Gewinde benötigen usw., ist der Leistungsunterschied vernachlässigbar. Sie sollten den Python-Code selbst optimieren und die Aufrufe an die Prozesse (z. B. welche Optionen Sie verwenden usw.) –

Antwort

4

Ich würde erwarten, dass jeder Geschwindigkeitsunterschied zwischen, sagen wir os.system und und subprocess.Popen, durch die Kosten des Startens eines neuen Prozesses überschwemmt werden (und die Kontextumschaltung benötigt, um es tatsächlich auszuführen). Daher empfehle ich zuerst subprocess zu verwenden und die Leistung zu messen.

Eine mögliche Leistungsüberlegung: os.system und subprocess.Popen(shell=True, ...) bewirken, dass ein zusätzlicher Shell-Prozess erstellt wird. In den meisten Fällen ist diese Shell nicht erforderlich. Es ist verschwenderisch, es zu schaffen; Sie erhalten doppelt so viele Prozesse, wie Sie für keinen Vorteil benötigen.

Verwandte Themen