定期的に実行されるコードがいくつかありますが、時々 (月に 1 回など)、プログラムがどこかでハングしているように見え、どこにあるのかわかりません。
私は、プログラムが実行されている時間の長さをチェックする「クイックフィックス」を実装しようと考えました. マルチスレッドを使用して関数を呼び出し、実行中に時間を確認することにしました。
例えば:
import datetime
import threading
def myfunc():
#Code goes here
t=threading.Thread(target=myfunc)
t.start()
d1=datetime.datetime.utcnow()
while threading.active_count()>1:
if (datetime.datetime.utcnow()-d1).total_seconds()>60:
print 'Exiting!'
raise SystemExit(0)
ただし、これは他のスレッド (myfunc) を閉じません。
他のスレッドを殺すための最良の方法は何ですか?