python timer mystery

8

Nun, zumindest ein Rätsel für mich. Berücksichtigen Sie Folgendes:

%Vor%

Funktioniert wie erwartet, liefert also einen "Beat!" Nachricht alle 2 Sekunden. Als nächstes wird keine Ausgabe erzeugt:

%Vor%

Wo ist das Problem?

    
jldupont 18.02.2010, 20:43
quelle

2 Antworten

14

Aus dem Man-Setimer meines Systems (Hervorhebung von mir):

  

Das System stellt jedem Prozess drei Intervallzeitgeber zur Verfügung, die jeweils in einer eindeutigen Zeitdomäne dekrementieren . Wenn ein Timer abgelaufen ist, wird ein Signal an den Prozess gesendet, und der Timer wird (möglicherweise) neu gestartet.

     

ITIMER_REAL dekrementiert in Echtzeit und liefert SIGALRM nach Ablauf.

     

ITIMER_VIRTUAL verringert sich nur, wenn der Prozess ausgeführt wird und liefert SIGVTALRM nach Ablauf.

Haben Sie gerade übersehen, dass Ihr Prozess nicht ausgeführt wird, während Sie schlafen? Es wird sehr lange dauern, bis du die tatsächlich genutzte Zeit mit dieser Schleife aufaddierst.

    
Roger Pate 18.02.2010, 20:48
quelle
3

Der signal.ITIMER_VIRTUAL Countdown zählt nur, wenn der Prozess läuft. time.sleep(5) unterbricht den Prozess, so dass der Timer nicht dekrementiert wird.

    
Stephen L 18.02.2010 20:49
quelle

Tags und Links