线程Thread-1中的Python异常(最有可能在解释器关闭期间引发)?

线程Thread-1中的Python异常(最有可能在解释器关闭期间引发)?,第1张

线程Thread-1中的Python异常(最有可能在解释器关闭期间引发)?

使用守护程序线程时,这很常见。为什么要

.daemon = True
在线程上设置?想一想。尽管守护程序线程有合法用途,但 大多数情况下
程序员会这样做,因为它们很困惑,例如“我不知道如何彻底关闭线程,否则,程序将在退出时冻结,所以我知道!我将说它们是守护程序线程。然后,解释器将不等待它们退出时终止。问题已解决。”

但这并没有解决-
通常只会带来其他问题。特别是,守护程序线程将继续运行,而解释器将在退出时自行销毁。模块被销毁,stdin和stdout和stderr被销毁,等等,等等。然后,由于它们试图访问的东西被歼灭,各种事情都可能在守护程序线程中出错。

您看到的特定消息是在某个线程中引发异常时产生的,但是到目前为止,解释器的销毁甚至使该

sys
模块不再包含任何可用的东西。该线程执行保留的引用
sys.stderr
内部,以便它可以告诉你
的东西 ,然后(具体而言,您所看到的确切消息),但过多的解释器已被摧毁告诉你别的什么地方出了错。

因此,找到一种方法来彻底关闭线程(并删除

.daemon = True
)。对您的问题了解不足,无法提出具体的方法,但是您会想到的;-)

顺便说一句,我建议删除构造

maxsize=0
函数上的参数
Queue()
。默认值为“无界”和“每个人都知道”,而很少有人知道这
maxsize=0
也意味着“无界”。随着其他数据类型已经
maxsize=0
表示“最大大小确实为0”(最好的例子是
collections.deque
),情况变得更糟。但是“没有论据意味着无限”仍然普遍存在。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5655513.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存