Python 中断主线程';来自子线程的原始输入()
我有多线程Python程序。主线程响应用户的命令:Python 中断主线程';来自子线程的原始输入(),python,multithreading,Python,Multithreading,我有多线程Python程序。主线程响应用户的命令: while 1: try: cmd = raw_input(">> ") if cmd == "exit": break # other commands except KeyboardInterrupt: break # other stuffs 问题:如何从其他子线程中断while循环 sys.exit()不是选项,因为w
while 1:
try:
cmd = raw_input(">> ")
if cmd == "exit":
break
# other commands
except KeyboardInterrupt:
break
# other stuffs
问题:如何从其他子线程中断while循环
sys.exit()
不是选项,因为while循环之外还有其他代码
我认为可能的解决办法是:
sys.stdin
thread.interrupt\u main()
,但没有成功
解决方案2:调用sys.stdin.write()
将不起作用,以下代码也不起作用:
f = open(sys.stdin.name, "w")
f.write("exit")
f.close()
提供一个答案,建议您生成另一个进程,并使用
subprocess.Popen.communicate()
向其发送命令。但是,难道不能对当前进程本身执行通信()
吗?您可以使用类似的方法来检查sys.stdin上是否有输入。这使循环不再等待原始输入,而是轮询,您可以使用循环条件检查是否退出循环