2011-06-30 43 views
1

很少收到以下错误:调试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 

here我猜我已经打了与在同一过程中有太多的线程一些资源限制。 (上面第33行)启动了一个Timer object,这确实会打开一个新线程,但是,我的架构是这样的,即不应该同时存在几个定时器。由于这是一个罕见的事件,我不知道如何重新创建它,所以我想设置它,以便下次发生时我将获得所有我需要的信息。这看起来不像一个普通的Python异常(没有指定异常类型...)。是否有可能try-except呢?除了try-catch之外,还有什么方法可以捕捉到正在发生的事情吗?

回答

3

一个正常的异常,实际上它是thread.error(“线程”是完成所有低级的东西的模块)。它在ThreadError的“线程”模块中是别名,所以只需要捕获threading.ThreadError。

+0

我猜小写和非非CamelCase例外让我愚蠢...... – Jonathan

+1

标准库中偶尔存在不一致性,因为它会破坏现有代码(并且可能会惹恼现有用户),如果它改变的话。重新模块也有一个称为“错误”的例外。 – MRAB