ubuntuでpython3.6.7を使っています。マルチスレッドのプログラムで一定以上の時間経過でスレッドを停止させたくて@timeoutを使ったのですが、
ValueError: signal only works in main thread
というエラーが出ます。
大まかなプログラムの構造は以下の通りです。
def a()、def b()、def c()のいずれの上の行に@timeoutを置いても同じエラーが出ます。
一定時間経過で停止させるスレッドはどれでもいいのですが、どうしたら良いのでしょうか、ご存じの方がいらっしゃいましたら教えてください。
def a():
a
def b():
b
def c():
c
@timeout(20)
def d():
while True:
try:
d
except TimeoutError:
print("タイムアウト終了")
break
t1 = threading.Thread(target=a, args=(event,))
t1.setDaemon(True)
t2 = threading.Thread(target=b, args=(event,))
t2.setDaemon(True)
t3 = threading.Thread(target=c, args=(event,))
t3.setDaemon(True)
t4 = threading.Timer(5,d, args=(event,))
t1.start()
t2.start()
t3.start()
t4.start()

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/16 06:03