python如何暂停计时器_Python如何终止线程。计时器上课正确吗?

该博客探讨了一个Python程序在使用线程时遇到的问题,即RAM使用不断增加导致进程崩溃。作者创建了一个名为Foo的类,使用了Timer来周期性调用函数,但在尝试使用.cancel().join()组合或.time.sleep()来终止线程时遇到了RuntimeError。问题在于线程的无限递归启动,导致内存不断增长。博主寻求解决方案来正确终止线程并防止内存泄漏。
摘要由CSDN通过智能技术生成

我现在正在试验线程。计时器但不知怎么的我做得不太好。。

我的目标是运行数百个函数,一直重复。

问题是,我的RAM的使用在不断增长,直到进程停止。在

我的代码是这样的:from threading import Timer

class Foo:

def __init__(self, number):

self.number = number

self.timer = Timer(1, self.print_number)

self.timer.start()

def print_number(self):

print "Number: %s"%self.number

self.repeat()

def repeat(self):

self.timer.cancel()

#self.timer.join()

#time.sleep(1)

self.timer = Timer(3, self.print_number)

self.timer.start()

for x in range(1, 300):

Foo(x)

所以,我读到我可以在.cancel()之后使用.join()方法终止线程。

但是当我这样做的时候我得到了一个RuntimeError: (cannot join current thread)。

在一个类似的话题上我读到了我可以用的时间。睡觉在.cancel()之后终止线程,

但这对我来说没什么大不了的。在

我的问题是:在这个代码示例中,我如何正确地终止线程,如何阻止脚本使用越来越多的RAM,或者我做了什么严重的错误?在

很抱歉,如果我问的问题已经被问了很多次了,但我正在搜索和尝试了几个小时,还没有找到解决方案。在

提前谢谢。在

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值