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 版本?。。。。
1
julyclyde 2023-11-28 11:35:13 +08:00
那你先做实验呗,缩小一下怀疑范围再说下一步
首先,去掉 docker 试试 其次,换到低版本试试 第三,不用 pycharm 而用独立的 python 试试 |