ユーザー入力を待機するスレッドを生成する方法を達成しようとしています。10 秒以内に入力がない場合は、スクリプトで生成されたスレッドを強制終了し、処理を続行します。テキストが入力された場合にスレッドから入力を取り戻す方法はありますが、新しく生成されたスレッドをタイムアウトで強制終了させる方法はありません。
以下の例は、私が最も近いものです。新しく作成されたスレッドに、それがデーモンであり、メイン スクリプトが終了すると終了することを伝えます。これに関する問題は、スクリプトが終了するか、ユーザーが何かを入力するまで、スレッドが待機し続けることです。
shared_var = ['1']
def run(ref):
ref[0] = raw_input("enter something: ")
print "shared var changed to '%s'" % (ref[0])
thread = threading.Thread(target=run, args=(shared_var,))
thread.daemon = True
thread.start()
time.sleep(10) # simplified timeout
#Need some way to stop thread if no input has been entered
print "shared var = " + shared_var[0]
スレッドを突然強制終了するのが最善の方法ではないことはわかっていますが (関連リンク)、raw_input で待機している新しいスレッドを中断する方法がわかりません。