Python - Родительский поток обрабатывает дочерние потоки Исключение

Есть ли способ заставить родительский элемент, который породил новый поток, перехватить исключение порожденных потоков? Ниже приведен реальный базовый пример того, что я пытаюсь достичь. Он должен перестать считать, когда возникает исключение, но я не знаю, как его поймать. Являются ли исключения потокобезопасными? Я хотел бы иметь возможность использовать модуль 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()

ОБНОВЛЕНИЕ

Мой исходный код немного вводил в заблуждение. На самом деле он ищет что-то вроде этого:

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.system, если программа по какой-то причине зависает.

5
задан Das.Rot 2 August 2011 в 14:56
поделиться