为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

胡说叔叔 2023-04-25 15:58:10
我在 Windows 中使用默认的 Python 3.8 解释器。每当我在其中运行一个长循环时,它就会停止,我必须按下或按住 Enter 键才能继续运行。这在 Linux 中从来都不是问题。如何解决此问题?# this loop will eventually stop/hang/pause forever, until I press the Enter keyfor i in range(5000):   time.sleep(1)   print(i)如果我通过任何 IDE 运行代码,它不会暂停。但出于我自己的原因,我想直接在解释器中运行这段特定的代码。我等了 1 分钟多才继续截屏。这不是一次性的问题。我运行的任何循环,无论大小或复杂程度如何,都会在几次迭代后永久停止,直到我按下键盘上的 ENTER 键。
查看完整描述

3 回答

?
FFIVE

TA贡献1797条经验 获得超6个赞

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



查看完整回答
反对 回复 2023-04-25
?
狐的传说

TA贡献1804条经验 获得超3个赞

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

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


查看完整回答
反对 回复 2023-04-25
?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

我猜你遇到了什么。


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


因此,在每个之后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


查看完整回答
反对 回复 2023-04-25
  • 3 回答
  • 0 关注
  • 78 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信