pythonでスレッドを再起動させる

pythonでマルチスレッドを使っている時にスレッドがエラーで停止したときに再起動させて復活させる。

環境

python 3.5.2

プログラム

 サブスレッドで÷0をして意図的にエラーをして、それをメインが監視して落ちていたら再起動
 ここでは監視としてメインとスレッドの時間を比較して監視する

import threading, time

global_lock = threading.Lock()   # LOCK OBJECT
global_time = 0
            
class sub_while(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)

    def run(self):
        global global_time
        time_cnt=0
        
        while True:
            global_lock.acquire()
            time_cnt = time_cnt+1
            global_time = int(time.time())
            global_lock.release()
            
            print("sub_thread:",int(time.time()))
            
            if(time_cnt >= 5):
                #error
                val = 100/0
            time.sleep(1)
    
if __name__ == "__main__": 
    global global_time
    
    thread1 = sub_while()
    thread1.start()

    #再起動閾値時間
    threshold_time =5
    while True:
        print("main_time:",int(time.time()))
        print("diff_time:",int(time.time()) - global_time)

        global_lock.acquire()
        #スレッド監視
        if(int(time.time()) - global_time > threshold_time):
            print("-- thread restart --")
            thread1 = sub_while()
            thread1.start()
        global_lock.release()

        time.sleep(1)        

結果

sub_thread: 1543545253
main_time: 1543545253
diff_time: 0
main_time: 1543545254
sub_thread: 1543545254
diff_time: 0
main_time: 1543545255
sub_thread: 1543545255
diff_time: 0
main_time: 1543545256
sub_thread: 1543545256
diff_time: 0
main_time: 1543545257
diff_time: 0
sub_thread: 1543545257
Exception in thread Thread-1:
Traceback (most recent call last):
  File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner
    self.run()
  File "threadtest2.py", line 27, in run
    val = 100/0
ZeroDivisionError: division by zero

main_time: 1543545258
diff_time: 1
main_time: 1543545259
diff_time: 2
main_time: 1543545260
diff_time: 3
main_time: 1543545261
diff_time: 4
main_time: 1543545262
diff_time: 5
main_time: 1543545263
diff_time: 6
-- thread restart --
sub_thread: 1543545263
main_time: 1543545264
diff_time: 0
sub_thread: 1543545264
main_time: 1543545265
diff_time: 1
sub_thread: 1543545265
main_time: 1543545266
diff_time: 1
sub_thread: 1543545266
main_time: 1543545267
diff_time: 1
sub_thread: 1543545267
Exception in thread Thread-2:
Traceback (most recent call last):
  File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner
    self.run()
  File "threadtest2.py", line 27, in run
    val = 100/0
ZeroDivisionError: division by zero

main_time: 1543545268
diff_time: 1
main_time: 1543545269
diff_time: 2

 
以上。