当前位置:   article > 正文

后台运行python程序输出缓冲区问题_python运行找不到缓冲区

python运行找不到缓冲区

后台运行python程序输出缓冲区问题

问题发现

写脚本给工具使用时,遇到一个问题:用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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

在命令行下用以下命令直接执行该脚本没有问题:

python test.py
  • 1

而用以下命令后台执行该脚本时,发现生成了日志文件,但是并没有每秒输出,而是在脚本执行完毕之后一次性输出所有数字:

python test.py > test.log &
  • 1

从而验证了后台运行python程序输出会先输出到缓冲区,等缓冲区满或者脚本结束后再输出。

网上看到stderr输出是无缓存的,于是再写一个脚本验证该问题:

vim test1.py
#!/usr/local/bin/python
#-*- coding: utf-8 -*-

import sys

sys.stdout.write("stdout1 ")
sys.stderr.write("stderr1 ")
sys.stdo
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/278185
推荐阅读
相关标签
  

闽ICP备14008679号