赞
踩
写脚本给工具使用时,遇到一个问题:用python写的脚本输出的内容没有实时显示在发版工具的输出上,而是等脚本执行完后一次性输出。一开始以为是工具的问题,找了半天也没找到什么问题,最后发现后台运行python程序输出到缓冲区的问题,这里总结一下。
为了验证这个问题,写了一个测试脚本,从0到19每秒钟输出一个数字:
vim test.py
#!/usr/local/bin/python
#-*- coding: utf-8 -*-
import sys,time
for x in xrange(0,20):
print x
time.sleep(1)
在命令行下用以下命令直接执行该脚本没有问题:
python test.py
而用以下命令后台执行该脚本时,发现生成了日志文件,但是并没有每秒输出,而是在脚本执行完毕之后一次性输出所有数字:
python test.py > test.log &
从而验证了后台运行python程序输出会先输出到缓冲区,等缓冲区满或者脚本结束后再输出。
网上看到stderr输出是无缓存的,于是再写一个脚本验证该问题:
vim test1.py
#!/usr/local/bin/python
#-*- coding: utf-8 -*-
import sys
sys.stdout.write("stdout1 ")
sys.stderr.write("stderr1 ")
sys.stdo
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。