Python - Have parent thread handle child threads Exception
Question: Is there a way to have the parent that spawned a new thread catch the spawned
threads exception? Below is a real basic example of what I am trying to
accomplish. It should stop counting when Exception is raised, but I don't know
how to catch it. Are exceptions thread safe? I would love to be able to use
the `Subprocess` module, but I am stuck using Python 2.3 and am not sure how
else to do this. Possibly using the `threading` module?

    
    
    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**

My original code was a little misleading. It am really looking for something
more like this:

    
    
    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()
    

I am trying to create a watchdog to kill the os.system call if the program
hangs up for some reason.


Answer: > stuck using Python 2.3

Python 2.3 is like 10 years old now. Why are you still using it?

> Possibly using the threading module

You should be using threading anyway.

You are probably thinking about the problem wrong though. You should probably
create some classes and rethink the approach to your problem.

Also if you're creating a watchdog, it probably doesn't make much sense to
have it in the same process as what you're doing. time.sleep() is a system
call that a regular python `Exception` won't cancel anyway.

