请教一下,关于启动线程卡死的问题

2020-10-11 22:41:53 +08:00
 chiyeung524
用 pyqt5 写了一个界面,按下某按钮事件为启动线程 A,但是线程 A 运行到一半就会导致整个进程卡死
如果去掉界面,直接 main 运行线程 A,却是可以完整运行线程 A
或者改成按下按钮启动线程 B,线程 B 为简单的 print 循环,也是可以完整运行的。
不知道为什么界面+线程 A,就会卡死崩溃呢?(线程 A 会运行开头一部分内容,但都会在固定的地方卡死)
不知道我这个问题描述清晰不~~找了很多资料都没找到跟我这个情况相似的~
1655 次点击
所在节点    Python
8 条回复
laminux29
2020-10-11 23:31:29 +08:00
第一次玩界面编程,特别是有界面线程 + 新开线程, 建议先用 Visio 画画流程图,很多问题你自己画画图都能解决。

解决不了的话,你把图发出来。
ysc3839
2020-10-12 00:09:59 +08:00
不清晰,请发代码,没有具体代码没法判断是什么问题。
chiyeung524
2020-10-12 00:32:02 +08:00
@ysc3839 已补充,谢谢帮忙看一下
chiyeung524
2020-10-12 00:32:53 +08:00
@laminux29 我自己看了一下,逻辑很简单,但就是会线程卡死,不知道问题出在哪~
ysc3839
2020-10-12 00:39:14 +08:00
@chiyeung524 并没有 unit.afk 的代码。
chiyeung524
2020-10-12 00:42:50 +08:00
@ysc3839 那一串太长了,不好发。而且这里头不会牵涉到线程内容,只是会有比较多的循环文件 IO,单独运行这个方法是没问题的,单独作为线程去 start 也没问题,就是加入到按钮的事件响应后,运行了一小部分就会卡死崩溃。
chiyeung524
2020-10-12 00:45:36 +08:00
@ysc3839
if __name__ == "__main__":
afk=threading.Thread(target=unit.afk)
afk.setDaemon(True)
afk.start()
afk.join()
print('bye')
就是说,这样运行是没问题的。
ysc3839
2020-10-12 00:53:28 +08:00
@chiyeung524 太长的话可以发到 https://paste.ubuntu.com/ 等贴代码的网站。
没有这段代码的话无法判断是什么问题。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/714000

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX