Ich bin mit dem subprocess
Modul zwei Befehle auszuführen:Run subprocess mit mehreren Befehlen und lösen in den Hintergrund zu halten, um
import shlex
from subprocess import check_call()
def comm_1(error_file):
comm = shlex("mkdir /tmp/kde")
try:
check_call(comm)
except subprocess.CalledProcessError:
error_file.write("Error comm_1")
def comm_2(error_file):
comm = shlex("ls -la /tmp/kde")
try:
check_call(comm)
except subprocess.CalledProcessError:
error_file.write("Error comm_2")
if __name__ == "__main__":
with open("error_file", "r+") as log_error_file:
comm_1(log_error_file)
comm_2(log_error_file)
log_error_file.write("Success")
Ich bin mir dessen bewusst ein paar Fallen in diesem Entwurf, wie die error_file
geteilt wird mit den Funktionen. Dies wird jedoch leicht umstrukturiert. Was ich versuche, ist, den gesamten Prozess in den Hintergrund zu bringen. Ich würde dies erreichen mit
check_call(comm, creationflags=subprocess.CREATE_NEW_CONSOLE)
Aber das wäre ein Rennen Problem darstellen, weil ich sicherstellen möchten, dass comm_1
vor comm_2
beginnt beendet ist. Was ist der beste Ansatz, um dies mit subprocess
zu tun? Ich kann python-daemon
oder andere Pakete außerhalb der Standardbibliothek von Python 2.6 nicht verwenden.
EDIT: Ich könnte versuchen, etwas zu verwenden, wie
nohup python myscript.py &
Aber die ideia ist nur ein Weg, um den Job aus dem Python-Skript zu starten.
Scheint so, als könntest du Dinge so ändern, dass 'if __name__ ==" __main __ "' myscript.py etwas hervorbrachte, das am Ende tut, was du gerade tust. Mit den richtigen Bedingungen könnte das wahrscheinlich sein. – martineau
Sorry, aber ich folge nicht. Soll ich die Funktionen entfernen? – Ivan