【问题标题】:debugging python's "error: can't start new thread"调试python的“错误:无法启动新线程”
【发布时间】:2011-06-30 15:13:46
【问题描述】:

我很少收到以下错误:

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 我知道我遇到了一些资源限制,这与在同一进程中拥有太多线程有关。 t.start()(上面的第 33 行)启动了一个 Timer object,它确实打开了一个新线程,但是,我的架构是这样的,最多只能同时存在几个计时器。

由于这是一个罕见的事件,我不知道如何重新创建它,我想设置它,以便下次发生它时我将拥有我需要的所有信息。这看起来不像是一个常规的 Python 异常(没有指定异常类型......)。可以try-except吗?除了try-catch,还有其他方法可以捕捉到正在发生的事情吗?

【问题讨论】:

    标签: python multithreading exception timer


    【解决方案1】:

    一个正常的异常,实际上它是thread.error(“线程”是执行所有低级工作的模块)。它在“线程”模块中别名为 ThreadError,因此只需捕获 threading.ThreadError。

    【讨论】:

    • 标准库中偶尔会出现不一致的情况,因为如果更改它会破坏现有代码(并可能惹恼现有用户)。 re 模块还有一个异常,叫做“error”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-12
    • 2021-01-13
    • 2016-01-23
    • 1970-01-01
    • 1970-01-01
    • 2018-09-29
    • 1970-01-01
    相关资源
    最近更新 更多