python不等缓存满就输出

在Linux环境中,使用python脚本输出到文件可能会遇到输出不实时的问题,这是由于输出存在缓存导致的。解决这个问题的方法包括在运行Python时添加`-u`参数,使输出变为无缓冲模式,或者在程序中调用`flush()`函数强制清空输出缓存。通过这两个方法,可以确保输出立即写入到文件,避免顺序错乱。
摘要由CSDN通过智能技术生成

在linux中使用python xxx.py > out.log会出现文件不实时输出,打印的顺序并非期望顺序,原因:存在输出缓存,解决这个问题的办法如下:

  1. 给python增加-u参数,可控制输出为“无缓冲二进制stdout和stderr”,python --help可查-u的含义,如下:
-u     : unbuffered binary stdout and stderr; also PYTHONUNBUFFERED=x
         see man page for details on internal buffering relating to '-u'
  1. 在写文件中使用.flush()函数
    如果python程序中使用了write 向文件中写入数据,避免缓存需要在write之后加入.flush()函数。
    说明:python 中使用write,将数据写入到文件中,但是并不是write之后,就立刻写入到文件(比如a.txt)中,python的write会先将数据放在内存的缓冲区中,等到积累了一定的量,再一起写入到磁盘文件中。这样可以提高性能,减少访问磁盘的次数。

1)有缓存,因为缓存不满,见不到打印的1,2,3

f = open('f.txt','w')
f.write('1,2,3')
while(1):
    pass

2)关闭缓存,直接输出,可以见到打印的1,2,3

f = open('f.txt','w')
f.write('1,2,3')
f.flush()
while(1):
    pass
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值