python輸出緩衝區的問題

2022-06-09 03:57:07 字數 1044 閱讀 4195

碰到的問題,一段**,print在前,log的在後,檢視日誌中log的反而在前面。是python輸出緩衝區的問題。

python輸出緩衝區要滿 4k 才寫入檔案,除非禁用快取或者強制輸出或者程式結束。中途 ctrl+c 中斷會丟失一些輸出。

#

!/usr/bin/python

#coding=utf-8

'''暫停1s輸出

'''import

time

defprintstar(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

sysdef

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

輸出緩衝區

輸出緩衝區 printf 輸出緩衝區 顯示器 printf函式列印的內容會先送入輸出緩衝區,輸出緩衝區將資料送到顯示器我們才能看見。什麼時候輸入緩衝區會將資料送到顯示器 什麼時候輸出緩衝區會清空 1 當輸出乙個換行符時 2 當輸入時,先清空輸出緩衝區 3 輸出緩衝區滿時 4 當主動呼叫fflush ...

輸入緩衝區與輸出緩衝區

本博文通過一段程式來理解輸入緩衝區與輸出緩衝區。程式如下 author wanghao created time thu 17 may 2018 06 03 12 ampdt file name test.c description include int main int argc,const c...

php 緩衝區,PHP的輸出緩衝區

1 什麼是緩衝區?緩衝區的作用是把輸入或者輸出的內容先放進記憶體,而不顯示或者讀取,最本質的作用就是協調高速cpu和相對緩慢的io裝置 磁碟等 的運作。2 php在執行的時候,在什麼地方有用到緩衝區?當執行php的時候,如果碰到了echo print r之類的會輸出資料的 php就會將要輸出的資料放...