отладка Python "ошибка: не может начать новый поток" - PullRequest
1 голос
/ 30 июня 2011

Редко я получаю следующую ошибку:

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 голосов
/ 30 июня 2011

Это - это нормальное исключение, на самом деле это thread.error ("thread" - это модуль, который выполняет все низкоуровневые операции).Он имеет псевдоним в модуле «Threading» как ThreadError, так что просто перехватывайте threading.ThreadError.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...