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 栏中移除焦点,因此您将看到它不再存在。
我在 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 栏中移除焦点,因此您将看到它不再存在。