Есть ли способ, чтобы родитель, который породил новый поток, перехватывал исключение порожденных потоков? Ниже приведен реальный базовый пример того, чего я пытаюсь достичь. Он должен перестать считать, когда возбуждается Exception, но я не знаю, как его поймать. Безопасны ли исключения потока? Мне бы очень хотелось иметь возможность использовать модуль Subprocess
, но я застрял на Python 2.3 и не уверен, как еще это сделать. Возможно использование модуля threading
?
import time
import thread
def test():
try:
test = thread.start_new_thread(watchdog, (5,))
count(10)
except:
print('Stopped Counting')
def count(num):
for i in range(num):
print i
time.sleep(1)
def watchdog(timeout):
time.sleep(timeout)
raise Exception('Ran out of time')
if __name__ == '__main__':
test()
UPDATE
Мой оригинальный код немного вводил в заблуждение. Это действительно ищет что-то еще, как это:
import time
import thread
import os
def test():
try:
test = thread.start_new_thread(watchdog, (5,))
os.system('count_to_10.exe')
except:
print('Stopped Counting')
def watchdog(timeout):
time.sleep(timeout)
raise Exception('Ran out of time')
if __name__ == '__main__':
test()
Я пытаюсь создать сторожевой таймер для завершения системного вызова os.s, если программа по какой-то причине зависает.