调试Python的“错误:无法启动新线程”
我很少遇到以下错误:
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这个错误就可以了。