账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    python关于线程的一点问题?以及如何合适的结束线程?
    • 2020-01-01 00:00
    • 10
    16
    0

    目的

    我写了一个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
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部