简短版本:我有一个程序在无限循环中向终端打印连续的整数。在某些时候,终端变黑了,没有输出可见,但我仍然可以执行命令。
详细:
我在PCG中阅读this answer并希望在Python中尝试。这是:
#!/bin/python2
class Dier(object):
def __init__(self):
global ct
ct += 1
print ct
def __del__(self):
Dier()
ct = 0
Dier()
该程序无限循环,打印每一步的迭代次数。从Ubuntu gnome终端执行过夜(我们在几分钟内达到数十万分钟),终端只显示黑色。程序仍在运行,并显示新行,但看不到任何内容。我杀了程序,但终端,包括命令提示符,是黑色的。我可以输入命令,但它们可以工作,但没有输出可见。
为什么会这样?
我在评论中提供的一些信息:
答案 0 :(得分:0)
似乎输出正在缓冲。您应该尝试将打印更改为
print ct, "\n"
或
print ct
sys.stdout.flush()
或者你可以通过调用-u
参数(参见https://docs.python.org/2/using/cmdline.html#cmdoption-u)或设置PYTHONUNBUFFERED=1
env变量(参见https://docs.python.org/2/using/cmdline.html#envvar-PYTHONUNBUFFERED)来告诉python不缓冲输出