3.12,有人遇到过 RuntimeError: can't create new thread at interpreter shutdown,吗?

175 天前
 qazwsxkevin
import sys; print('Python %s on %s' % (sys.version, sys.platform))
/usr/local/bin/python3 /.pycharm_helpers/pydev/pydevd.py --multiprocess --qt-support=auto --client localhost --port 35669 --file /opt/aptest312/test.py 
已连接到 pydev 调试器(内部版本号 232.8660.197)Traceback (most recent call last):
  File "/.pycharm_helpers/pydev/_pydevd_bundle/pydevd_comm.py", line 1900, in do_it
    t.start()
  File "/usr/local/lib/python3.12/threading.py", line 971, in start
    _start_new_thread(self._bootstrap, ())
  File "/.pycharm_helpers/pydev/_pydev_bundle/pydev_monkey.py", line 860, in pydev_start_new_thread
    return _original_start_new_thread(_UseNewThreadStartup(function, args, kwargs), ())
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RuntimeError: can't create new thread at interpreter shutdown

https://discuss.ray.io/t/issue-runtimeerror-cant-start-new-thread/10894/1 https://youtrack.jetbrains.com/issue/PY-64310/Debugger-steps-into-threading-shutdown-Python-3.12 https://forums.docker.com/t/runtimeerror-cant-start-new-thread/138142/2

看完大家的讨论,大概知道可能是 3.12 的 bug 。。。。
我的情况和他们大致一样,我是在 docker 容器内调试,其中一个进程,进程准备开一个新线程做 mysqldb CRUD 操作,折腾了一天,逐步 PyCharm 的 DEBUG ,每一步没写错,变量都正常,到这一步

SQLCursor = sqlcon.cursor(cursorclass=MySQLdb.cursors.DictCursor)
ret = SQLCursor.execute(sqlStr)
r = SQLCursor.fetchall()

r 始终返回 0,内容也写不进
不经意切过去才在 console 看到上面的报错(正常运行的话,啥都不显示就 exit(0))
翻了 10 几页 google ,虽然大概知道是 bug ,好像只能考虑降 python 版本?。。。。

1057 次点击
所在节点    Python
1 条回复
julyclyde
175 天前
那你先做实验呗,缩小一下怀疑范围再说下一步
首先,去掉 docker 试试
其次,换到低版本试试
第三,不用 pycharm 而用独立的 python 试试

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

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

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

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

© 2021 V2EX