不久前,我从恩修的旧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位。在
这看起来像是缓冲输出。尝试以以下方式运行脚本:
-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
相关问题 更多 >
编程相关推荐