python输出缓冲区的问题

  碰到的问题,一段代码,print在前,log的在后,查看日志中log的反而在前面。是python输出缓冲区的问题。

  python输出缓冲区要满 4k 才写入文件,除非禁用缓存或者强制输出或者程序结束。中途 ctrl+c 中断会丢失一些输出。

#!/usr/bin/python
#coding=utf-8
‘‘‘
暂停1s输出
‘‘‘

import time

def printStar(n):
        for i in range(n):
                print " * ",
                time.sleep(1)

if __name__ == ‘__main__‘:
        printStar(10)

  等待10s后一次性输出:

  * * * * * * * * * *

#!/usr/bin/python
#coding=utf-8
‘‘‘
暂停1s输出
‘‘‘

import time
import sys

def printStar(n):
        for i in range(n):
                print " * ",
                sys.stdout.flush()
                time.sleep(1)

if __name__ == ‘__main__‘:
        printStar(10)

  则是一秒钟输出一个。

  python程序stdout会先输出到缓冲区,等缓冲区满或者脚本结束再输出,而stderr不会先输出到缓冲区。print 会调用 sys.stdout 的 write 方法。

  解决的办法:

  1、运行时加-u参数,如 # python -u test.py 

  2、在不要缓冲的每一次print后面添加sys.stdout.flush()函数

  3、添加环境变量 PYTHONUNBUFFERED=1

原文地址:https://www.cnblogs.com/lnlvinso/p/8992839.html

时间: 2024-10-27 07:39:36

python输出缓冲区的问题的相关文章

python输出颜色与样式的方法

一.输出颜色与样式的方法 上次遇到这个问题就想写下来,其实当时我也不怎么会,老师说这个东西不需要理解,只需要死记硬背,写的多了就记住了,所以今天搜集了几篇文章,加上自己的理解,写下了这篇python 输出颜色的样式与方法的文章,一方面想自己记录下自己的理解,另一方面想用自己通俗的理解送给需要的盆友. 在写python 程序代码的时候,我们知道python输出的字符串颜色和一般字符相同,但是许多时候,我们需要强调某些字符,就需要把其变为易于认出的颜色或者显著的样子. 格式:"\033[字背景颜色:

PHP的输出缓冲区

什么是缓冲区? 简单而言,缓冲区的作用就是,把输入或者输出的内容先放进内存,而不显示或者读取.至于为什么要有缓冲区,这是一个很广泛的问题,如果有兴趣,可以在网山找下资料.其实缓冲区最本质的作用就是,协调高速CPU和相对缓慢的IO设备(磁盘等)的运作. PHP在执行的时候,在什么地方有用到缓冲区? 想要了解PHP的缓冲区,就要知道执行PHP的时候,缓冲区被设置到了什么地方.当执行PHP的时候,如果碰到了echo print_r之类的会输出数据的代码,PHP就会将要输出的数据放到PHP自身的缓冲区,

PHP的输出缓冲区(转)

什么是缓冲区?简单而言,缓冲区的作用就是,把输入或者输出的内容先放进内存,而不显示或者读取.至于为什么要有缓冲区,这是一个很广泛的问题,如果有兴趣,可以在网山找下资料.其实缓冲区最本质的作用就是,协调高速CPU和相对缓慢的IO设备(磁盘等)的运作. PHP在执行的时候,在什么地方有用到缓冲区?想要了解PHP的缓冲区,就要知道执行PHP的时候,缓冲区被设置到了什么地方.当执行PHP的时候,如果碰到了echo print_r之类的会输出数据的代码,PHP就会将要输出的数据放到PHP自身的缓冲区,等待

vs2013中设置输出缓冲区

//vs2013设置输出缓冲区 /*windows下是没有设置输出buffer的,也就是说C++中cout的时候,会直接输出,而不是先进入缓冲区等缓冲区满或者被刷新再输出.但是我们可以手动设置缓冲区*/ #include<iostream> using namespace std; int main() { /* 这个段代码在Linux下用g++执行不会输出,因为1被存到缓冲区中,而windows下会输出,因为windows下没有设置buffer cout << 1; while

python 输出颜色的与样式的方法

上次遇到这个问题就想写下来,其实当时我也不怎么会,老师说这个东西不需要理解,只需要死记硬背,写的多了就记住了,所以今天搜集了几篇文章,加上自己的理解,写下了这篇python 输出颜色的样式与方法的文章,一方面想自己记录下自己的理解,另一方面想用自己通俗的理解送给需要的盆友. 在写python 程序代码的时候,我们知道python 输出的字符串颜色和一般字符相同,但是许多时候,我们需要强调某些字符,需要把其变为易于认出的颜色或者显著的样子.小编这里也搜集到了添加颜色的格式, 格式:"\033[字背

python输出乘法口诀

for i in range(1,10): for j in range(1,i+1): print (" ".join(["%d*%d=%d" %(j,i,i*j)])) [[email protected] qinbin]# python test.py 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 1*6=6 2*6

python输出字符串,UnicodeEncodeError: &#39;ascii&#39; codec can&#39;t encode characters in position问题

http://blog.sina.com.cn/s/blog_64a3795a01018vyp.html 参考于这个博主,我自己做一个笔记. 把一个列表转换成字符串输出的时候出现了UnicodeEncodeError: 'ascii' codec can't encode characters in position 32-34: ordinal not in range(128)问题,使用的是ulipad编译器. 解决方法1: 在开头加上 import sys reload(sys) sys.

python输出中文——如何在Windows控制台打印不乱码

文章介绍 用Python在控制台打印中文如何不会乱码,一直是困扰很多Pythoner的问题,甚至很多Python老手也经常犯难.原因就在于从一般网页.数据库或文本外来数据源上抓取过来的内容,需要经过正确的编解码才可以正常输出,而Python的编解码机制比较复杂,没有深入思考的话经常遇到调试错误.这篇文章介绍了最常见的几种输出中文的情况,编译平台为Windows控制台,Python版本为2.7.9 文章中一些内容参考了点击打开链接 感谢原作者分享. 预备知识 str和unicode 首先需要弄清楚

大数据:Mapper输出缓冲区MapOutputBuffer

Mapper的输出缓冲区MapOutputBuffer 现在我们知道了Map的输入端,紧接着我们看map的输出,这里重点就是context.write这个语句的内涵.获取视频中文档资料及完整视频的伙伴请加QQ群:947967114 搞清Mapper作为参数传给map的context,这里我们看Mapper的run被调用的时候作为了参数传递下来.调用Mapper.run的是MapTask. runNewMapper.到这里我们深究一下runNewMapper.我们看MapTask的run方法:我们