マルチスレッドの Python プログラムがあります。メイン スレッドはユーザーのコマンドに応答します。
while 1:
try:
cmd = raw_input(">> ")
if cmd == "exit":
break
# other commands
except KeyboardInterrupt:
break
# other stuffs
質問: while ループを他の子スレッドから切り離すにはどうすればよいですか?
sys.exit()
while ループの外側に他のコードがあるため、オプションではありません。
私が考える可能な解決策:
- メインスレッドに割り込む
- 「出口」を書く
sys.stdin
解決策 1: を試しthread.interrupt_main()
ましたが、うまくいきませんでした。
sys.stdin.write()
解決策 2:次のコードでも呼び出しが機能しません。
f = open(sys.stdin.name, "w")
f.write("exit")
f.close()
別の同様の質問では、別のプロセスを生成subprocess.Popen.communicate()
し、コマンドを送信するために使用することを提案する回答が提供されます。communicate()
しかし、現在のプロセス自体を実行することはできませんか?