碰到的問題,一段**,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就會將要輸出的資料放...