首页 » 信息技术 »

解决RuntimeError: main thread is not in main loop

2019年4月19日 / 958次阅读
Python

今天在写Python GUI加Threading多线程程序的时候,出现了这个错误,Runtime: main thread is not in main loop。

网络上几乎找不到对这个问题的简单有效解决方案,后来自己看python官方文档,发现在线程start之前,设置一个daemon属性为True,这个问题就解决了。代码大概是这样的:

    msg_handle = threading.Thread(target=msg_pp, args=(sock,))
    msg_handle.daemon = True
    msg_handle.start()

python官方在Threading库中是这样描述daemon属性的:

daemon

A boolean value indicating whether this thread is a daemon thread (True) or not (False). This must be set before start() is called, otherwise RuntimeError is raised. Its initial value is inherited from the creating thread; the main thread is not a daemon thread and therefore all threads created in the main thread default to daemon = False.

daemon默认是False,将其设置为True,再Start,就可以解决本文所述问题。

daemon为True,就是我们平常理解的后台线程,用Ctrl-C关闭程序,所有后台线程都会被自动关闭。如果daemon属性是False,线程不会随主线程的结束而结束,这时如果线程访问主线程的资源,就会出错。

本文链接:https://www.maixj.net/ict/runtimeerror-main-thread-is-not-in-main-loop-21037

相关文章

留言区


前一篇:
后一篇:

栏目精选

云上小悟,麦新杰的独立博客

Ctrl+D 收藏本页

栏目


©Copyright 麦新杰 Since 2014 云上小悟独立博客版权所有 备案号:苏ICP备14045477号-1。云上小悟网站部分内容来源于网络,转载目的是为了整合信息,收藏学习,服务大家,有些转载内容也难以判断是否有侵权问题,如果侵犯了您的权益,请及时联系站长,我会立即删除。

网站二维码
go to top