Child-Prozesse starten?!

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
froedi

hi!

ich möchte in meinem programm mehrere child-prozesse (versch. andere scripts) starten, die parallel laufen sollen.

ich habe bereits versucht mit

Code: Alles auswählen

os.popen(...)
die neuen prozesse zu starten, nur leider wartet python immer darauf, dass ein prozess beendet wird, bevor der nächste gestartet wird. d.h. die prozesse laufen nacheinander und nicht parallel, was ich jedoch nicht will!

wie schaffe ich es, dass child-prozesse parallel laufen??


nebenbei: in den scripts, die als child-prozesse aurufen möchte arbeite ich mit relativen pfaden. wenn ich sie nun von einem anderen ort aus aufrufe, bekomme ich fehlermeldungen à la "no such file or directory" :(

wie kann ich diesen fehler beheben?



danke schonmal für eure hilfe ;)
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hi froedi,

os.sqawn in seinen verschiedenen Ausführungen startet Commandos/Scripte, wenn als mode P_NOWAIT übergeben wird als eigenen Prozess. Zu 2, falls Du unter Linux/Unix arbeitetst, verwende Pfade relativ zum Homeverzeichnis oder absolute Pfade, Beispiel

Code: Alles auswählen

userdatenfilename = os.path.join(os.path.expanduser("~"),".myscript","daten")
Gruß

Dookie
Gast

danke für den tipp dookie!

mit os.spawn*() hatte ich schon ein wenig herumexperimentiert, aber ich bin nicht klargekommen damit :(

wie man spawnl() & spawnv() verwendet weiß ich jetzt, viel nützlicher wären jedoch spawnlp() & spawnvp(). ABER ...

AttributeError: 'module' object has no attribute 'spawnvp'

:(

btw: ich arbeite unter windows - liegt es vielleicht daran, dass die genannten funktionen nicht verfügbar sind?
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

yepp, aus der Python-Libraryreferenz
spawnlp(), spawnlpe(), spawnvp() and spawnvpe() are not available on Windows
Gruß

Dookie
Gast

oh mein gott - das hatte ich ja ganz übersehen :roll:

danke nochmals!
Antworten