threading.Thread: Exit-Code und Signal

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
Daniel26
User
Beiträge: 26
Registriert: Freitag 2. Juni 2017, 09:29

Hallo,

ich möchte per threading.Thread eine Funktion in einen eigenen Thread auslagern, damit meine GUI nicht hängt, während der Prozess läuft.
Diese Funktion ruft per os.system ein Shell-Script auf. Dieses Script liefert einen Return-Code. In der Funktion kommt der Returncode auch an bzw. ich kann ihn mit "print" ausgeben.
Aber wie krieg ich den Returncode zurück an den Mutterprozess? Ich würde gerne je nach Returncode eine Aktion starten.

Wie kriege ich im Mutterprozess mit, wenn der abgespaltene Thread durch ist? Gibts da ein Signal?

Gruß

Daniel
Benutzeravatar
sparrow
User
Beiträge: 4198
Registriert: Freitag 17. April 2009, 10:28

Wie man aus einer GUI mit Threads umgeht kommt ganz auf das verwendete Toolkit an. Womit baust du deine GUI?
Benutzeravatar
__blackjack__
User
Beiträge: 13122
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Daniel26: `os.system()` sollte man nicht verwenden. Dafür gibt es das `subprocess`-Modul. Und dort nur ``shell=True`` verwenden wenn das auch *tatsächlich* benötigt wird, denn sonst fängt man sich die gleichen Probleme ein derentwegen man `os.system()` nicht verwenden sollte.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Daniel26
User
Beiträge: 26
Registriert: Freitag 2. Juni 2017, 09:29

@sparrow: Die Gui bau ich mit pyQt4

@__blackjack__ Ich kann auch Subprocess verwenden, kein Ding.
Sirius3
User
Beiträge: 17760
Registriert: Sonntag 21. Oktober 2012, 17:20

Warum verwendest Du pyQt4 und nicht 5?
Mit Qt nicht threading verwenden, sondern QThread von Qt. Dort benutzt man zum Übertragen von Nachrichten den Signal-Slot-Mechanismus von Qt. Gab in den letzten Tagen zu diesem Thema auch schon eine Beispiel von __deets__.
Daniel26
User
Beiträge: 26
Registriert: Freitag 2. Juni 2017, 09:29

Qt4 weil man bei uns auf alten Kram steht. Das ganze mache ich auch noch in python 2.7....
Ich schau mir das Qthread mal an.

Danke
Benutzeravatar
ThomasL
User
Beiträge: 1367
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Daniel26 hat geschrieben: Montag 28. Oktober 2019, 15:42 Qt4 weil man bei uns auf alten Kram steht. Das ganze mache ich auch noch in python 2.7....
Mein Beileid. :-(
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Antworten