Subprozess unter Windows

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
lise
User
Beiträge: 8
Registriert: Mittwoch 31. Januar 2007, 09:28

hallo (Beginner in Not...),

vielleicht hat einer einen hilfreichen Tip für mich? Mein Problem ist folgendes: Ich möchte unter Win32 aus meinem Python Programm

(1) ein weiteres .py aufrufen und
(2) dieses aus meinem Hauptprogramm heraus auch wieder terminieren.

korriegiert mich bitte, falls ich falsch liege:
Erst einmal benutze ich win32api, gegebenenfalls auch noch das subprocess-modul (?). über win32api sollte ich doch Zugang zu den Windows eigenen Befehlen wie OpenProcess und TerminateProcess haben. So weit, so gut. Damit ließen sich meine Probleme ja lösen. Nur benötige ich für OpenProcess und TerminateProcess die PID, die ich über die Windows-Befehle dadurch erhalten würde, daß ich den Prozess zu Beginn der Prozedur erst mal erstelle mit CreateProcess - der würde mir die PID zurückgeben. Nur leider gibt's sowas nicht bei win32api :(
Ich bräuchte also irgendeine Lösung, mit der ich einen Platzhalter für einen Subprozess erstelle und mir hierfür die PID zurückgegeben wird - und das Ganze für Windows.

(Noch besser wäre allerdings ein Lösungsansatz, der auf Plattformunabhängigkeit hinausläuft)

kann jemand helfen?

lg,
lise
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Starten kannst du es mit subprocess, das liefert dir die PID, beenden kannst du es dann mit den Win32API-Funktionen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Mal eine andere Frage. Warum ist eigentlich nicht schon die win32api mehr in Python integriert. Es gibt einen ganzen haufen an Methoden, die nur unter Unix funktionieren, wie z.B. os.kill
Ich stecke da nicht so tief drin, aber kann man nicht eine reihe von diesen nur-Unix-Methoden mit hilfe der win32api genau so auch unter Windows umsetzten?

Warum wurde das nicht gemacht? Weiß jemand ob sich in Python 3k das ändern wird?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

jens hat geschrieben:Warum wurde das nicht gemacht?
Grauenhafte Dokumentation, total unpythonisch etc. Also so etwas möchte ich wirklich nicht in der stdlib haben. Die am meisten fehlenden Funktionen kann man ja implementieren, wie os.kill über die Win32API unter Windows aber bitte nicht den ganzen Rest.

Übrigens, ActivePython ist mit pywin32.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
prof_weirdo
User
Beiträge: 38
Registriert: Donnerstag 2. Februar 2006, 11:27
Wohnort: Bei Osnabrück

Leonidas hat geschrieben:
jens hat geschrieben:Warum wurde das nicht gemacht?
Grauenhafte Dokumentation, total unpythonisch etc. Also so etwas möchte ich wirklich nicht in der stdlib haben. Die am meisten fehlenden Funktionen kann man ja implementieren, wie os.kill über die Win32API unter Windows aber bitte nicht den ganzen Rest.

Übrigens, ActivePython ist mit pywin32.
Dokumentation kann man schreiben und praktisch wär das nach meiner Meinung schon, unpythonisch hin oder her.
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

prof_weirdo hat geschrieben:unpythonisch hin oder her.
Genau das soll es eben nicht sein^^
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Es gibt einen einfachen Grund: Wäre pywin32 im Core, müsste es von den Core-Devs gemaintaint werden (huh, Denglisch^HNeudeutsch vor...). Und den allermeisten von denen geht es jedoch so: "Isch abe aber gar kein Windows..."
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
prof_weirdo
User
Beiträge: 38
Registriert: Donnerstag 2. Februar 2006, 11:27
Wohnort: Bei Osnabrück

birkenfeld hat geschrieben:Es gibt einen einfachen Grund: Wäre pywin32 im Core, müsste es von den Core-Devs gemaintaint werden (huh, Denglisch^HNeudeutsch vor...). Und den allermeisten von denen geht es jedoch so: "Isch abe aber gar kein Windows..."
Gut. Das ist ein schlüssiges Argument.

Nachtrag: Wobei Windows zu ignorieren eigentlich dumm ist.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

prof_weirdo hat geschrieben:Nachtrag: Wobei Windows zu ignorieren eigentlich dumm ist.
Das meine ich aber auch! Nicht das ich Windows so toll finde. Aber ignorieren kann und sollte man es nicht. Ist das selbe Problem wie mit MySQLdb für Windows. Es wirft einfach kein gutes Licht auf Python :(

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Wenn es so viele Leute gibt, die Windows und Python verwenden, dann wird doch wohl einer von denen in der Lage sein, einen MySQLdb-Port für Windows beizusteuern.

Ich sehe es als OpenSource-Autor als meine Freiheit an, bestimmte Dinge einfach *nicht* zu tun, wenn ich dazu keine Lust oder keine Ressourcen habe.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Mit dem zweiten Satz hast du natürlich vollkommen Recht! Da stimme ich dir also zu. Dennoch ist es nicht nur für die Python Community schlecht oder meinst du nicht?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
prof_weirdo
User
Beiträge: 38
Registriert: Donnerstag 2. Februar 2006, 11:27
Wohnort: Bei Osnabrück

birkenfeld hat geschrieben:Wenn es so viele Leute gibt, die Windows und Python verwenden, dann wird doch wohl einer von denen in der Lage sein, einen MySQLdb-Port für Windows beizusteuern.

Ich sehe es als OpenSource-Autor als meine Freiheit an, bestimmte Dinge einfach *nicht* zu tun, wenn ich dazu keine Lust oder keine Ressourcen habe.

Es kritisiert ja auch niemand Dich als Open Source-Autor. Die Sache ist einfach das eine Programmiersprache die Windows auf diese Art nicht beachtet deutlich schlechtere Karten hat sich durchzusetzen, denn die meisten Computer (abgesehen mal von Servern) haben nunmal Windows am laufen. Und mit "die meisten" ist schliesslich nicht eine kleine Überzahl gemeint , sondern eine vernichtend grosse.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

prof_weirdo hat geschrieben:(abgesehen mal von Servern)
Und wieviele dieser nicht-Server haben MySQL laufen? Eine verschwindend geringe Anzahl.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

prof_weirdo hat geschrieben: Es kritisiert ja auch niemand Dich als Open Source-Autor. Die Sache ist einfach das eine Programmiersprache die Windows auf diese Art nicht beachtet deutlich schlechtere Karten hat sich durchzusetzen, denn die meisten Computer (abgesehen mal von Servern) haben nunmal Windows am laufen. Und mit "die meisten" ist schliesslich nicht eine kleine Überzahl gemeint , sondern eine vernichtend grosse.
Die Programmiersprache an sich hat nichts mit MySQLdb zu tun -- Python liefert gar kein MySQL-Modul mit.

Und genau deswegen, weil auf den vielen vielen Computern Windows läuft, frage ich mich ja auch, warum keiner davon auch ein Windows-Build von MySQLdb machen kann. <sarkasmus>Entweder sind die alle inkompetent oder den kompetenten Leuten ist MySQL egal.</sarkasmus>
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

Ich wuerde (um mal zurueck zum Thema zu kommen) einfach das Pythonteil als Modul einbinden und starten... notfalls waeren auch exec- oder eval-Funktionen moeglich, aber das ist ziemlich unsauber (oder?).

Siehe Windoze vs Linux:
Mir ist die Windoze-Welt totaaaal egal ^^
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

jens hat geschrieben:Mal eine andere Frage. Warum ist eigentlich nicht schon die win32api mehr in Python integriert.
Hallo Jens!

Das habe ich mir auch oft schon gedacht, aber andererseits denke ich, dass es besser war, `ctypes` in Python zu integrieren. So können sich versionsunabhängigere und hoffentlich besser dokumentierte Projekte etablieren, als es pywin32 ist. Die Dokumentation zu pywin32 ist wirklich sehr schlecht. Teilweise wurden Dinge nur halb umgesetzt, so dass man zwar glaubt, es müsse funktionieren, aber später drauf kommt, dass es doch nicht so wie erwartet funktioniert.

Ich hoffe, dass in Zukunft mehr ctypes-abhängige Schnittstellen entstehen. Diese wären nämlich in Python geschrieben und nicht so sehr davon abhängig, dass irgendjemand etwas kompiliert oder ein Maintainer endlich das schon lange fertige Windows-Binary in die SourceForge-Website stellt.

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Antworten