Signalverarbeitung in Python

In meinem Programm habe ich eine Reihe von threads ausgeführt, und ich versuche
zu unterbrechen, der Haupt-thread, um es zu tun, etwas asynchron.
Also ich habe ein hf und senden Sie den Haupt-Prozess ein SIGUSR1 - siehe code
unten:

def SigUSR1Handler(signum, frame):

    self._logger.debug('Received SIGUSR1')

    return

signal.signal(signal.SIGUSR1, SigUSR1Handler)

[signal.signal(signal.SIGUSR1, signal.SIG_IGN)]

Im obigen Fall alle threads und der main-Prozess beendet - von einem 'c'
Sicht dieses war unerwartet, - ich will die threads weiter, da Sie
vorher waren das signal. Wenn ich die SIG_IGN in stattdessen weiterhin alles
fein.

Kann jemand mir sagen, wie dies zu tun? Vielleicht habe ich etwas zu tun mit "Rahmen"
manuell zurück, wo es war..nur eine Vermutung aber
vielen Dank im Voraus,


Vielen Dank für Ihre Hilfe bei diesem.

Erklären ein bisschen mehr, ich habe die thread-Instanzen zu schreiben-string Informationen zum
ein sockel, der auch die Ausgabe in eine Datei. Diese threads führen Sie Ihre eigene Timer, so dass Sie
unabhängig voneinander schreiben, Ihre Ausgaben an die Steckdose. Wenn das Programm läuft, die ich auch sehen
Ihre Ausgabe auf stdout, sondern es werden alle Register, sobald ich sehe die debug-Zeile aus dem signal.

Brauche ich die threads ständig sende diese info, aber ich brauche das Hauptprogramm
nehmen Sie einen Befehl ein, so fängt es auch etwas anderes zu tun (parallel) für eine Weile.
Ich dachte, ich würde nur in der Lage sein, um ein signal von der Kommandozeile auslösen dieser.

  • "alle threads und der main-Prozess beendet" meinst du, dass der Prozess getötet werden? Ist es abstürzt?
  • nehmen Sie die oben genannten Schritte in einem mono-thread-Programm und dann killall -USR1 python hatte, funktionierte, btw.
InformationsquelleAutor SJA | 2010-01-29
Schreibe einen Kommentar