7 Stimmen

warum wartet dieses Python-Skript, bis der Timer-Thread ausgeführt wird?

from threading import Timer

def startTimer():

  t = Timer(10.0, foo, ['hello world', 'tell me more'] )
  t.start()
  print 'Timer function invoked'
  print 'function exit'

def foo(msg, msg2):
  print 'foo was executed'
  print msg
  print msg2

if __name__ == '__main__':  
  startTimer()
  print 'end of program'

Ich habe den obigen Code in einer Datei (timer.py) gespeichert und dann python timer.py in die Shell eingegeben. Aber es hat gewartet, bis foo() ausgeführt wurde. Warum ist das so? Wie nennen Sie dieses Verhalten/diese Art der Ausführung?

20voto

Jochen Ritzel Punkte 99416

Timer ist nur ein Thread und Python wartet auf alle nicht daemonic Threads, bevor der Interpreter gestoppt wird.

Ein Thread kann als "Daemon" gekennzeichnet werden Thread" gekennzeichnet werden. Die Bedeutung dieser Markierung ist, dass das gesamte Python-Programm beendet wird, wenn nur noch Daemon-Threads übrig sind. Der Anfangswert wird geerbt von dem erzeugenden Thread geerbt. Das Flag kann über die Eigenschaft daemon gesetzt werden.

aus den Unterlagen

Satz the_timer.daemon=True und Python wird sofort beendet, anstatt auf den Timer zu warten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X