调试Python的“错误:无法启动新线程”

1 投票
1 回答
1918 浏览
提问于 2025-04-16 20:35

我很少遇到以下错误:

Exception in thread Thread-1240:
Traceback (most recent call last):
  File "C:\Python26\lib\threading.py", line 534, in __bootstrap_inner
    self.run()
  File "C:\Python26\lib\threading.py", line 738, in run
    self.function(*self.args, **self.kwargs)
  File "C:\Users\MyUser\Documents\MyProject\a_script.py", line 33, in some_func
    t.start()
  File "C:\Python26\lib\threading.py", line 476, in start
    _start_new_thread(self.__bootstrap, ())
error: can't start new thread

这里我了解到,我碰到了某种资源限制,这个限制和在同一个进程中有太多线程有关。t.start()(上面第33行)启动了一个定时器对象,这确实会打开一个新线程,不过,我的系统架构是这样的:不应该同时存在太多定时器。

因为这是个罕见的事件,我不知道怎么重现它,所以我想设置一些东西,这样下次发生时我就能收集到所有需要的信息。这个错误看起来不像是普通的Python异常(没有指定异常类型……)。我能用try-except来处理它吗?除了try-catch,还有其他方法可以捕捉发生了什么吗?

1 个回答

4

这其实是一个正常的错误,实际上是线程错误("thread"是处理所有底层操作的模块)。在"threading"模块中,它被称为ThreadError,所以只需要捕捉threading.ThreadError这个错误就可以了。

撰写回答