Python 循环在 Window 的解释器中不断停止

Python loop keeps stopping in Window's interpreter

我在 Windows 中使用默认的 Python 3.8 解释器。

每当我在其中 运行 一个长循环时,它就会停止,我必须按下或按住 Enter 键才能继续运行。这在 Linux.

从来都不是问题

如何解决此问题?

# this loop will eventually stop/hang/pause forever, until I press the Enter key
for i in range(5000):
   time.sleep(1)
   print(i)

如果我 运行 通过任何 IDE 代码,它不会暂停。但出于我自己的原因,我想 运行 直接在解释器中 运行 这段特定代码。

我等了 1 分钟多才继续截屏。这不是一次性的问题。任何循环 I 运行,无论多小或多或多复杂,都会在几次迭代后永久停止,直到我按下键盘上的 ENTER 键。

您显示的程序实际上什么都不做。它不会打印任何内容到控制台,也不会等待输入。

所以它实际上 运行 83 分钟没有显示它正在做任何事情,然后它会以退出代码 0 退出。

我猜你在想什么运行。

当然,程序会继续运行,但你只是没有看到输出,因为输出是缓冲的,你没有刷新它。

因此,在每个 print(i) 之后,调用函数 flush_output_streams():

def flush_output_streams() -> None:
    """
    flushes the output streams.

    flush calls are wrapped in try ... except, because 
    standard streams might be replaced with other streams which 
    dont have the flush method.
    """
    try:
        sys.stdout.flush()
    except Exception:
        pass
    try:
        sys.stderr.flush()
    except Exception:
        pass

如果您点击输出,控制台将暂停脚本,它会尝试停止代码到“select”的一部分输出。试试吧,不要点击它。 ENTER 将从控制台上的 select 栏中移除焦点,因此您将看到它不再存在。