Python3.6 新版 Thread 还是会阻塞主线程吗?

2018-03-22 18:05:29 +08:00
 miniyao
试了一下在 Thread 中新启一个任务,然后在这个任务里 time.sleep(60),然后整个应用的主线程就全阻塞了。
3570 次点击
所在节点    Python
7 条回复
aisk
2018-03-22 18:29:54 +08:00
之前就不会阻塞,你是不是在主线程里调用 join 或者 wait 了?
miniyao
2018-03-22 18:32:35 +08:00
@aisk 想起来了,在这个 Thread 中有 IO 操作了,所以 GIL 不释放
toono
2018-03-22 22:49:46 +08:00
@miniyao 我印象中 IO 操作是会释放 GIL 的。
tkmiles
2018-03-23 00:05:11 +08:00
发发代码来看看呀~~~
凭空怎么看问题嘛
tkmiles
2018-03-23 00:06:59 +08:00
@aisk join 和 wait 都是等锁, C 代码会释放 gil 的
wwqgtxx
2018-03-23 12:59:06 +08:00
除非你调用了某个忘记释放 gil 的垃圾第三方库,否则不会出现这种情况的
就算是你要 ctypes 和 cffi 来调用第三方 dll 的时候都一样会释放 gil
Linxing
2018-03-23 14:03:32 +08:00
话说上次调用 telebot 就算这样锁死的 找了好久才发现问题 提 bug 了

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

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

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

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

© 2021 V2EX