Pylab输出延迟标准输出



我不理解的是Pylab的某种行为。我编写了一个程序来计算一些数字并将其写入标准输出。之后,在同一程序中调用show(),这给了我图形输出。当我写

program.py > tmp_file

它打开图形并将数字写入tmp_file。到目前为止,一切都很好。现在,我想做同样的事情,但是自动化。但是,如果我写

program.py > tmp_file &

KONSOLE已准备好用于下一个命令,但是TMP_FILE保持空为空,直到显示该图为止(尽管Show()命令遵循PRINT命令program.py.py,而不是相反)。由于要显示图形需要一段时间,因此不可能使用TMP_File进行进一步的过程。例如,

program.py > tmp_file &
cat tmp_file

给出空输出,而

program.py > tmp_file
cat tmp_file

给出预期的结果值。

我在做什么错?有解决这个问题的解决方案吗?

我正在使用Suse标准Python安装2.7.3。

我找不到的另一个问题:是否可以将show()输出写入stdout?喜欢program.py> graph.xxx?

感谢您的帮助!

对于您的第二个问题,program.py > tmp_file使用

import sys
import pylab
pylab.plot([2,4,6,1,3,5])
pylab.savefig(sys.stdout, format='png')

您仍然必须明确指定格式:Matplotlib无法读取文件名并从中推断出格式。

,最好使输出文件名成为参数;然后,matplotlib可以使用实际文件名并自动确定格式:

import sys
import pylab
pylab.plot([2,4,6,1,3,5])
pylab.savefig(sys.argv[1])

program.py tmp_file.png

运行

最新更新