2016-05-23 7 views
0

Ich habe einen Python-Skript Py, dass im Grunde diesen tuePython - ein Prozess, aus dem Haupt py Datei getrennt starten

<take input from console> 
<launch command with os.system> 
<quit console> 

Das Problem ist, dass wenn ich Befehl starten mit os.system (string), es ausgeführt wird Im Python-Skript wird die Konsole nur beendet, wenn der Befehl beendet ist. Ich möchte den Befehl als einen anderen Prozess starten, also der Hauptcode geht weiter und kann Konsole (mit "quit", denke ich) beenden, ohne den Prozess zu berühren, der gestartet wurde. Wie kann ich?

+0

Dies ist etwas von einem Multi-Thread/Multi-Prozess-Konzept. Bitte lernen Sie Multithreading-, Multiprocessing- und Subprocess-Module. – pmaniyan

Antwort

0

Der Befehl gegeben system()wird als separater Prozess gestartet, aber system() wartet auf seine Beendigung. Der einfachste Weg, dies zu vermeiden, ist durch ein & auf Ihre Befehlsfolge anhängen, dann wird der Befehl im Hintergrund ausgeführt wird (i e ohne für deren Beendigung zu warten..):

system('./call_my_lengthy_program.sh &') 
0

Sie auch die subprocess module nutzen könntest.

# useless example 
import subprocess 
subprocess.Popen("sleep.exe 5 && echo test", shell=True) 
exit(0) 

.. dies wird 5 Sekunden warten und drucken Test auf Ihre Stdout.