python线程异常中断_在主线程中出现键盘异常而中断Python中的线程

我有几节课看起来差不多是这样的:import threading

import time

class Foo():

def __init__(self, interval, callbacks):

self.thread = threading.Thread(target=self.loop)

self.interval = interval

self.thread_stop = threading.Event()

self.callbacks = callbacks

def loop():

while not self.thread_stop.is_set():

#do some stuff...

for callback in self.callbacks():

callback()

time.sleep(self.interval)

def start(self):

self.thread.start()

def kill(self):

self.thread_stop.set()

我用的是我的主线:

^{pr2}$

我想要一个键盘中断来杀死线程后,所有的回调已经完成,但在循环重复之前。目前它们被忽略了,我不得不停止运行程序的终端进程。在

我看到了使用线程。事件从this post开始,但似乎我做得不正确,这使得这个项目的工作变得相当麻烦。在

我不知道它是否相关,但是我传递的回调从Internet访问数据,并大量使用重试装饰器来处理不可靠的连接。在

编辑

在这个循环之后,每个人看起来都像是在救命:def thread_loop(self):

while not self.thread_stop.is_set():

# do some stuff

# call the callbacks

self.thread_stop.wait(self.interval)

这是一种解决方案,尽管并不理想。此代码在PythonAnywhere上运行,帐户的价格是按CPU时间计算的。我要看看在一天的时间里,随着线程的不断唤醒和休眠,这个方法使用了多少,但它至少解决了主要问题

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值