2017-03-21 1 views
0

Timer für Hier implementiert istWie Signalmodul meinen Code Timer

import signal, time 


def timeoutHandler(): 
    raise Exception() 

try: 
    signal.signal(signal.SIGALRM, timeoutHandler) 
    signal.setitimer(signal.ITIMER_REAL, 5) 

    count = 0 
    while True: 
     print count 
     count += 1 
     time.sleep(1) 
except Exception as e: 
    print e 

Es funktioniert großartig, was mich stört, ist, wie dies durch das Signal-Modul implementiert wird (i nicht großes Wissen über Signale besitzen)

ich fand die Umsetzung wäre wie

  1. Signalmodul würde die SIGALRM in einem separaten Thread überwacht

  2. Als
  3. sobald es eine es Gelegenheit hat, erhält den Handler

  4. Was ich nicht verstehen, um sie auszuführen, wie sie ihre Kontrolle nicht wieder auf zurück zur Hauptgewinde (Die Ausnahme gefangen wird)

Sure Thread ist nicht, was hier im Bild ist und ich denke, einige OS-Konzept fehlt mir hier drüben.

Antwort

0

Der "separate Thread" ist das Betriebssystem selbst. signal.settimer fordert das Betriebssystem dazu auf, in 5 Sekunden einen SIGALRM an diesen Prozess zu senden.