新しいスレッドを生成した親に、生成されたスレッドの例外をキャッチさせる方法はありますか?以下は、私が達成しようとしていることの実際の基本的な例です。例外が発生するとカウントを停止するはずですが、キャッチする方法がわかりません。例外はスレッドセーフですか?モジュールを使用できるようにしたいと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呼び出しを強制終了するウォッチドッグを作成しようとしています。