Ich habe eine in Python geschriebene Anwendung, und wann auch immer ein Interrupt über Strg + C oder manchmal mit kill empfangen wird, die Anwendung wird hängen. Ein Stack-Trace wird von einem Thread dargestellt, aber die Anwendung bleibt im Vordergrund, und ich muss sie normalerweise mit Strg + Z dann im Hintergrund erstellen versuche es zu töten.
Was ist der richtige Weg, Signale und Tastaturinterrupts in einer Anwendung mit Gewinde zu behandeln?
Wenn Sie newthread.daemon = True
vor dem Start jedes Threads setzen, werden die Threads automatisch beendet, wenn der Hauptthread beendet wird. Das ist nicht genau das, was du gefragt hast, aber von dem, was du beschrieben hast, klingt es, als könnte es wissenswert sein.
Wenn Sie SIGINT
vor dem Start jedes Threads setzen, werden die Threads automatisch beendet, wenn der Hauptthread beendet wird. Das ist nicht genau das, was du gefragt hast, aber von dem, was du beschrieben hast, klingt es, als könnte es wissenswert sein.
CPython-Threading: Unterbrechen deckt ab, was mit Signalen in Python-Threads und verschiedenen geschieht Lösungen für Ihr Problem. Es ist eine gute Lektüre.
Verwenden Sie das Signalmodul und lesen Sie weiter hier Signalhandler und Einloggen in Python über mögliche Fallstricke.
Um Thread
Aktionen vom Benutzer abzufangen, müssen Sie einen Signal Handler für% co_de erstellen %.
Innerhalb des Signalhandlers notify (Nachrichtenwarteschlangen oder synchronisierter RLock-Attributzugriff) müssen Ihre Threads heruntergefahren werden oder was auch immer Sie vorhaben.
Ich habe eine in Python geschriebene Anwendung, und wann auch immer ein Interrupt über Strg + C oder manchmal mit kill empfangen wird, die Anwendung wird hängen. Ein Stack-Trace wird von einem Thread dargestellt, aber die Anwendung bleibt im Vordergrund, und ich muss sie normalerweise mit Strg + Z dann im Hintergrund erstellen versuche es zu töten.
Was ist der richtige Weg, Signale und Tastaturinterrupts in einer Anwendung mit Gewinde zu behandeln?
CPython-Threading: Unterbrechen deckt ab, was mit Signalen in Python-Threads und verschiedenen geschieht Lösungen für Ihr Problem. Es ist eine gute Lektüre.
Verwenden Sie das Signalmodul und lesen Sie weiter hier Signalhandler und Einloggen in Python über mögliche Fallstricke.
Um Ctrl+C
Aktionen vom Benutzer abzufangen, müssen Sie einen Signal Handler für% co_de erstellen %.
Innerhalb des Signalhandlers notify (Nachrichtenwarteschlangen oder synchronisierter RLock-Attributzugriff) müssen Ihre Threads heruntergefahren werden oder was auch immer Sie vorhaben.
Tags und Links python multithreading signals interrupt