Я, очевидно, неправильно понял что-то фундаментальное в атрибуте daemon объекта Thread Python.Понимание потоков демона Python
Рассмотрим следующий пример:
daemonic.py
import sys, threading, time
class TestThread(threading.Thread):
def __init__(self, daemon):
threading.Thread.__init__(self)
self.daemon = daemon
def run(self):
x = 0
while 1:
if self.daemon:
print "Daemon :: %s" % x
else:
print "Non-Daemon :: %s" % x
x += 1
time.sleep(1)
if __name__ == "__main__":
print "__main__ start"
if sys.argv[1] == "daemonic":
thread = TestThread(True)
else:
thread = TestThread(False)
thread.start()
time.sleep(5)
print "__main__ stop"
из питона документы:
Вся программа выходит на Python, когда нет в живых, не демон потоки не осталось.
Так что, если я запускаю TestThread в качестве демона, я ожидаю, что он завершит работу после завершения основного потока. Но этого не происходит:
> python daemonic.py daemonic
__main__ start
Daemon :: 0
Daemon :: 1
Daemon :: 2
Daemon :: 3
Daemon :: 4
__main__ stop
Daemon :: 5
Daemon :: 6
^C
Что я не могу получить?
Как я догадался Джастин и Брент, я работал с Python 2.5. Только что вернулись домой и опробовали на своей машине 2,7, и все работает нормально. Спасибо за помощь!
Не понял, что 'isDaemon' и' setDaemon' были в значительной степени устарели в 2.7. Хорошо знать. –