我正在使用Python脚本构建命令行工具。这是一个循环,用于检查数据并在延迟几秒钟后打印出一些东西。直到我在没有键盘事件的情况下在终端上单击任何内容或通过鼠标选择文本之前,它都可以正常工作。之后它什么也不做,不会打印并重新检查
import time
import sys
print('some thing')
for remaining in range(10, 0, -1):
sys.stdout.write("\r")
sys.stdout.write("recheck in {:2d}.".format(remaining))
sys.stdout.flush()
time.sleep(1)
sys.stdout.write("\rComplete! \n")
input()
我的环境是Windows 10上的anaconda 64位
答案 0 :(得分:1)
Python在Python 3.5中大大改变了其系统信号处理。 https://www.python.org/dev/peps/pep-0475/
它曾经在信号中断系统调用时引发InterruptedError。现在,信号中断时,系统调用包装程序代码将重新调用系统调用必要时重新计算任何超时时间。此级别的错误可能会以非常长的值召回系统调用。
附加调试器,查看进程卡住的位置。
编辑:将windbg附加到固定的控制台后。我发现这不是问题。我在新答案中发布了真正的解决方案。
答案 1 :(得分:1)