Python中的守护程序线程

时间:2013-08-09 09:50:18

标签: python multithreading

阅读后:http://pymotw.com/2/threading/#daemon-vs-non-daemon-threads我希望以下代码在2秒后终止:

from threading import Thread
from time import sleep

def a():
    i = 0
    while 1:
            print i
            i+=1



t = Thread(target=a)
t.setDaemon(True)
t.run()
sleep(2)

但是,它会永久保持打印数字。我在这里错过了什么吗?我在win7上。我从Windows shell获得相同的行为并且空闲。

1 个答案:

答案 0 :(得分:4)

您应该致电t.start(),而不是t.run()。第一个将生成一个新线程并从那里调用run。调用自己运行会导致您在当前线程中执行a函数。