Tôi đã hiểu rõ một điều gì đó cơ bản về thuộc tính daemon của đối tượng Python Thread.Tìm hiểu về các chủ đề daemon Python
xem xét như sau:
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"
Từ các tài liệu python:
Các Python toàn bộ chương trình thoát khi không đề phi daemon sống còn lại.
Vì vậy, nếu tôi chạy với TestThread dưới dạng daemon, tôi hy vọng nó sẽ thoát khi chuỗi chính đã hoàn thành. Nhưng điều này không xảy ra:
> python daemonic.py daemonic
__main__ start
Daemon :: 0
Daemon :: 1
Daemon :: 2
Daemon :: 3
Daemon :: 4
__main__ stop
Daemon :: 5
Daemon :: 6
^C
Tôi không nhận được gì?
Được đoán bởi Justin và Brent, tôi đã chạy bằng Python 2.5. Vừa mới về nhà và thử trên máy tính của riêng tôi chạy 2.7, và mọi thứ hoạt động tốt. Cảm ơn bạn đã giúp!
Không nhận ra 'isDaemon' và' setDaemon' đã bị phản đối khá nhiều trong 2.7. Tốt để biết. –