Seite 1 von 1

Mit Python andere Tasks töten

Verfasst: Dienstag 10. Dezember 2019, 18:57
von Call
Hallo Menschen,
ich brauche das Wissen, um innerhalb eines Python Programmes eine bestimmte Anwendung zu "töten"/schließen.

Danke schon Mal im voraus!

Re: Mit Python andere Tasks töten

Verfasst: Dienstag 10. Dezember 2019, 19:40
von noisefloor
Hallo,

was ist "eine andere Anwendung"? Ein anderer Prozess, der außerhalb deines Python-Skripts gestartet wurde?

Und auf welchem OS willst du das machen? Das ist in diesem Fall relevant.

Gruß, noisefloor

Re: Mit Python andere Tasks töten

Verfasst: Dienstag 10. Dezember 2019, 20:00
von Call
noisefloor hat geschrieben: Dienstag 10. Dezember 2019, 19:40 Hallo,

was ist "eine andere Anwendung"? Ein anderer Prozess, der außerhalb deines Python-Skripts gestartet wurde?

Und auf welchem OS willst du das machen? Das ist in diesem Fall relevant.

Gruß, noisefloor
In diesem Fall ist damit die Anwendung Microsoft Excel 2016 auf dem OS Windows 10 64 bit gemeint. Der Prozess wird durch meinen Python-Skript gestartet, Informationen werden abgerufen und nun soll der Prozess anschließend gestoppt werden.

Re: Mit Python andere Tasks töten

Verfasst: Dienstag 10. Dezember 2019, 20:20
von __blackjack__
@Call: Wenn Du das mit `subprocess.Popen()` startest, hat der Rückgabewert ja eine `terminate()`-Methode mit der man den Prozess den man da gestartet hat, auch wieder beenden kann.

Re: Mit Python andere Tasks töten

Verfasst: Dienstag 10. Dezember 2019, 20:21
von __deets__
Das subprocess Modul das du verwenden solltest gibt dir ein Objekt zurück, auf dem du terminate aufrufen kannst.

Re: Mit Python andere Tasks töten

Verfasst: Dienstag 10. Dezember 2019, 20:49
von Call
__deets__ hat geschrieben: Dienstag 10. Dezember 2019, 20:21 Das subprocess Modul das du verwenden solltest gibt dir ein Objekt zurück, auf dem du terminate aufrufen kannst.
excel = wincl.Dispatch("Excel.Application")
excel.Workbooks.Open(Filename=filename)
excel.Application.Run("PERSONAL.XLSB!Makro2")
excel.Application.Quit()

So starte ich derzeit und verarbeite ich

Re: Mit Python andere Tasks töten

Verfasst: Dienstag 10. Dezember 2019, 20:51
von Squipy
psutil soltle das können was du suchst:

Code: Alles auswählen

for pid in psutil.pids():
	p = psutil.Process(pid)
        if p.name() == 'programm_name':
        	p.kill()    

Re: Mit Python andere Tasks töten

Verfasst: Dienstag 10. Dezember 2019, 22:10
von __blackjack__
@Call: Das `Quit()` sollte die Anwendung doch bereits verlassen‽

@Squipy: Also erstmal ist `kill()` ziemlich brutal und sollte nur verwendet werden wenn `terminate()` nicht zum gewünschten Ergebnis führt. Und dann ist es normalerweise nicht nötig alle PIDs abzuklappern wenn man den Prozess selbst gestartet hat. Und statt die `pids()` abzufragen und dann selbst jede in `Process` zu verpacken würde ich `psutil.process_iter()` verwenden.

Re: Mit Python andere Tasks töten

Verfasst: Mittwoch 11. Dezember 2019, 19:32
von Call
__blackjack__ hat geschrieben: Dienstag 10. Dezember 2019, 22:10 @Call: Das `Quit()` sollte die Anwendung doch bereits verlassen‽

@Squipy: Also erstmal ist `kill()` ziemlich brutal und sollte nur verwendet werden wenn `terminate()` nicht zum gewünschten Ergebnis führt. Und dann ist es normalerweise nicht nötig alle PIDs abzuklappern wenn man den Prozess selbst gestartet hat. Und statt die `pids()` abzufragen und dann selbst jede in `Process` zu verpacken würde ich `psutil.process_iter()` verwenden.
Quit versucht leider nur es zu verlassen. Aber tatsächlich kommt dann eine Meldung, ob man denn die Datei speichern möchte. In meinem Fall wäre das sogar ziemlich egal. Also wenn jemand weiß, wie man auf speichern drücken kann, würde das auch helfen.

Re: Mit Python andere Tasks töten

Verfasst: Mittwoch 11. Dezember 2019, 19:45
von Sirius3
Hast Du denn schon die Dokumentation gelesen?
https://docs.microsoft.com/de-de/office ... ation.quit