python timer 死掉_Python 的 threading.Timer 类如果重复执行很多遍,会不会产生一堆无法退出的线程?...

本人想写一个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全局变量,所以避免了这个问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值