Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 终端输出变黑_Python_Linux_Terminal - Fatal编程技术网

Python 终端输出变黑

Python 终端输出变黑,python,linux,terminal,Python,Linux,Terminal,简短版本:我有一个程序,可以在无限循环中将连续整数打印到终端。在某个时刻,终端变黑了,没有可见的输出,但我仍然可以执行命令 详情: 我读了PCG,想用Python试试。这是: !/垃圾箱/蟒蛇2 Dierobject类: 定义初始自我: 全球ct ct+=1 打印ct 自我定义: 迪尔 ct=0 迪尔 这个程序无限循环,打印每个步骤的迭代次数。如果让我们在一夜之间从Ubuntu gnome终端在几分钟内执行到十分之一的百万,终端只显示黑色。程序仍在运行,出现了新行,但什么也看不见。我终止了程序,

简短版本:我有一个程序,可以在无限循环中将连续整数打印到终端。在某个时刻,终端变黑了,没有可见的输出,但我仍然可以执行命令

详情:

我读了PCG,想用Python试试。这是:

!/垃圾箱/蟒蛇2 Dierobject类: 定义初始自我: 全球ct ct+=1 打印ct 自我定义: 迪尔 ct=0 迪尔 这个程序无限循环,打印每个步骤的迭代次数。如果让我们在一夜之间从Ubuntu gnome终端在几分钟内执行到十分之一的百万,终端只显示黑色。程序仍在运行,出现了新行,但什么也看不见。我终止了程序,但是终端,包括命令提示符,是黑色的。我可以输入命令,它们可以工作,但没有可见的输出

为什么会这样

我在评论中提供的一些信息:

top报告的程序使用的内存保持恒定且较低。 我可以在终端上打印大得离谱的数字,而不会出现这种情况。我打印的最大数字有10^10^6位当然,终端忘记了它的开头,只显示最后的数字,但它的log10是1246124。我的程序不可能走那么远,那将需要宇宙年龄的数百万倍。 另一方面,如果我试图打印比这更大的东西,它似乎会冻结,使用CPU但没有任何输出,而原始输出在那里,但不可见。
似乎输出正在被缓冲。您应该尝试将打印更改为

print ct, "\n"


或者,您可以通过使用-u参数see调用python或设置PYTHONUNBUFFERED=1 env变量see告诉python不要缓冲输出。您断言会出现新行,但什么都看不见,这让我有点困惑。。。如果出现新行,则它们是可见的。相反地,如果什么都看不见,那么你怎么知道新的线条出现了呢?@twalberg屏幕是黑色的,但我可以看到我正在书写的光标的位置。你说的终端确切地说是什么意思?xterm?侏儒终端?还是说你的文本控制台?或者你是说一个IBM-3101插入到你电脑的串行端口?我想这与终端缓冲区和python输出缓冲区有关。你每次都试过打sys.stdout.flush吗?有趣的代码…我很确定这是gnome终端,而不是python。我在gnome终端中从python脚本中打印了大量日志之后就体验到了这一点。当我滚动时,文本通常会重新出现,这意味着错误显然是post sys.stdout。我现在没有GNOME来测试它,但是,为什么输出的其余部分是黑色的呢?我杀死了程序,我仍然可以编写命令,它们都是黑色的。sys.stdout.flush不会改变行为。
print ct
sys.stdout.flush()