本人想写一个python脚本,后台多线程运行。
def single():
print "start"
threading.Timer(10, single).start()
print "Thread Name:%s"%(threading.currentThread())
if __name__ == '__main__':
th = threading.Timer(10, single)
th.start()
没想到,线程跑到60多个的时候就自动死了
1. python里的Timer实际上就是一个线程类
2. 如果想实现每段时间执行一次某函数,网上给出的方法是:
import threading
def sayhello():
print "hello world"
global t #Notice: use global variable!
t = threading.Timer(5.0, sayhello)
t.start()
t = threading.Timer(5.0, sayhello)
t.start()
可是,感觉这种方法有问题。。
因为每个线程对象在析构时,都会自动的join该线程。
这样,主线程退出时,必然会join其产生的线程。同理,任意一个线程退出时都会join它产生的线程。也就是说,这种情况下,所有的线程都在产生后不会退出了。。。这样,就会运行一段时间后产生一堆join态的线程。。
这太恐怖了吧?
t是global全局变量,所以避免了这个问题。