Pylab输出延迟标准输出

时间:2014-03-11 09:46:53

标签: matplotlib

我不理解pylab的某些行为。我编写了一个程序来计算一些数字并将它们写入标准输出。之后,show()在同一个程序中调用,它给了我一个图形输出。 我写的时候

program.py > tmp_file

它打开图形并将数字写入tmp_file。到现在为止还挺好。现在,我想做同样的事情,但是自动化了。但是,如果我写

program.py > tmp_file &

konsole已准备好接受下一个命令,但tmp_file在显示图形之前保持为空(尽管show()命令遵循program.py中的print命令,而不是相反的方式)。由于显示图形需要一段时间,因此使用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?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

对于您的第二个问题,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运行。