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

我有多线程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\u main()
    ,但没有成功

    解决方案2:调用
    sys.stdin.write()
    将不起作用,以下代码也不起作用:

    f = open(sys.stdin.name, "w")
    f.write("exit")
    f.close()
    

    提供一个答案,建议您生成另一个进程,并使用
    subprocess.Popen.communicate()
    向其发送命令。但是,难道不能对当前进程本身执行
    通信()
    吗?

    您可以使用类似的方法来检查
    sys.stdin上是否有输入。这使循环不再等待原始输入,而是轮询,您可以使用循环条件检查是否退出循环