python的线程如何启用和结束_python关于线程的一点问题?以及如何合适的结束线程?...

目的

我写了一个Tkinter,按下按钮后执行事件,按下结束按钮停止事件。所以我想到了线程来做这件事,但是在python的线程当中遇到的一个问题就是:按下结束后,线程并没有完全结束。例如下述代码所示

class ControlThread(threading.Thread):

#任务控制线程,每次点击开始按钮创建一个新的线程

def __init__(self):

self._stop_event = threading.Event()

threading.Thread.__init__(self)

def run(self):

while not self.stopped():

print("hello world")

time.sleep(1)

print("hello world2")

time.sleep(1)

print("hello world3")

time.sleep(1)

def terminate(self):

#标志位设置为False,停止线程

self._stop_event.set()

def stopped(self):

#返回当前线程是否停止

return self._stop_event.is_set()

每三秒会输出上面的三条字符串,如果我让他运行10秒,我的目的是让他输出10条语句就结束,

aa.start()

time.sleep(10)

aa.terminate()

但是运行后输出了了12条数据,也就是说设置Event()并不能很好的结束,后面专用Multiprocessing process,可以达到目的,但是在Tkinter中创建多个进程会报错。

请问如何在python中能达到我这样的目的?

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值