当语句发生时,热情的树冠不会立即打印出来

2024-10-01 09:15:55 发布

您现在位置:Python中文网/ 问答频道 /正文

不久前,我从恩修的旧EPD换成了他们新的顶棚系统。在很大程度上,这是好的,但有一个方面特别令人烦恼。在

每当我运行python脚本时,无论是在causionipython环境中还是在命令行中,我的print语句都不会在该部分被命中时立即打印出来。相反,多个print似乎会在以后的某个时间同时执行。在

举个例子。。。在

import numpy as np

print "About to start long computation..."
a = np.random.randn(1e8)
print "Computation finished."

在生成完a后的之前,当两个语句同时打印时,才打印第一个语句。(您可以通过观察CPU监视器来判断何时进行计算。)

有人知道这是怎么回事吗?如果相关的话,我在Windows7机器上运行Canopy 1.0.0.1160,Python2.7.3664位。在


Tags: 命令行importnumpy脚本环境系统np时间
2条回答

这看起来像是缓冲输出。尝试以以下方式运行脚本:

python -u yourscript

-u标志关闭缓冲。在

(将python替换为操作系统的python可执行文件的名称。)

不,这不是EPD和Canopy之间的变化。虽然我认为可能有一些python发行版默认为缓冲关闭,但EPD并不是其中之一,性能受到的影响可能会太严重(正如kindall的评论所提到的),最好让程序员决定何时用户立即看到控制台输出(通常用于状态更新)。在

顺便说一句,树冠GUI中的IPython就是IPython QtConsole。如果您依赖于控制台I/O,那么您可能还需要注意QtConsole的这个长期存在的问题:

我不认为有一个合理的解决办法,冠层IPython,除了做它“适当”,即与flush。在

https://support.enthought.com/entries/22157050-Canopy-Python-prompt-QtConsole-Can-t-run-interactive-OS-shell-commands

相关问题 更多 >