V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
qazwsxkevin
V2EX  ›  Python

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

  •  
  •   qazwsxkevin · 2023-11-28 00:46:03 +08:00 · 1218 次点击
    这是一个创建于 372 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 条回复    2023-11-28 11:35:13 +08:00
    julyclyde
        1
    julyclyde  
       2023-11-28 11:35:13 +08:00
    那你先做实验呗,缩小一下怀疑范围再说下一步
    首先,去掉 docker 试试
    其次,换到低版本试试
    第三,不用 pycharm 而用独立的 python 试试
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3767 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 10:32 · PVG 18:32 · LAX 02:32 · JFK 05:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.