在Python中,为什么控制台输出会偶尔暂停,直到按下ctrl-c,如何解决?

7

在进行Python开发时,每周都会遇到这个问题。无论是在Linux的Bash、cmd.exe还是Powershell中,Python脚本有时会暂停其输出,导致人们认为它们可能已经死机。当按下ctrl-c时,控制台输出将恢复,并且很明显该脚本一直在后台执行。就像按下了滚动锁定键或其他什么东西。

程序并不重要,只能随着时间的推移而再现。您可以运行以下代码片段:

import time

i = 0
while True:
    print i
    i++
    time.sleep(1)

接下来的一周左右,控制台会暂停,尽管 i 在后台每秒都在增加。

这不仅是我设计不良 - 我曾经遇到过 Celery 进程、Django 测试服务器以及自己的程序出现这种情况。通常我只会把它视为“烦恼”,但如果程序真的非常忙碌,ctrl-c 也可能意外终止程序。

我的同事们也遇到了这种情况,但似乎没有人知道该怎么办。

有人有解决方法吗?

谢谢!


1
你能指定你正在使用的Python版本吗? - Jean-François Fabre
9
据我所知,任何 Python 版本中都不支持 i++,这是无效的语法。请注意,这里不是解释,而是翻译成通俗易懂的中文。 - Fred Larson
我在PowerShell中遇到过这个问题。如果我点击文本区域,它会暂停输出,如果我按回车键,它就会继续输出。非常烦人。 - Steven Rumbalski
1
你不小心按了Ctrl-S键吗?这会冻结控制台输出。 - Tomás Gonzalez Dowling
1
可能的答案,至少对于Windows来说:https://serverfault.com/questions/204150/sometimes-powershell-stops-sending-output-until-i-press-enter-why - matheburg
显示剩余3条评论
1个回答

0

可能是您点击了窗口外部或按下了Ctrl-S(这会暂停控制台输出)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接