欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python中stdout輸出不緩存的設(shè)置方法

 更新時間:2014年05月29日 10:56:01   作者:  
這篇文章主要介紹了python中stdout輸出不緩存的設(shè)置方法,這個方法只在比較特殊的環(huán)境中使用,需要的朋友可以參考下

考慮以下python程序:

復(fù)制代碼 代碼如下:

#!/usr/bin/env python

import sys

sys.stdout.write("stdout1 ")
sys.stderr.write("stderr1 ")
sys.stdout.write("stdout2 ")
sys.stderr.write("stderr2 ")

其中的sys.stdout.write也可以換成print。
運行這程序,你覺得會輸出什么?試驗一下,就會發(fā)現(xiàn),其實輸出并不是
復(fù)制代碼 代碼如下:

stdout1 stderr1  stdout2 stderr2

而是:
復(fù)制代碼 代碼如下:

stderr1 stderr2 stdout1  stdout2

究其原因,是因為緩存:雖然stderr和stdout默認(rèn)都是指向屏幕的,但是stderr是無緩存的,程序往stderr輸出一個字符,就會在屏幕上顯示一個;而stdout是有緩存的,只有遇到換行或者積累到一定的大小,才會顯示出來。這就是為什么上面的會顯示兩個stderr的原因了。
然而,有時候,你可能還是希望stdout的行為和stderr一樣,能不能實現(xiàn)呢?當(dāng)然是可以的,而且對于python,實現(xiàn)起來還特別方便,以下是兩個方法:
復(fù)制代碼 代碼如下:

python -u stderr_stdout.py
PYTHONUNBUFFERED=1 python stderr_stdout.py

第一種方法是給python指定 -u 參數(shù),第二種方法是在python運行時,指定 PYTHONUNBUFFERED 環(huán)境變量,這兩種方法其實是等效的。
當(dāng)然,也可以在程序的第一行指定 #!/usr/bin/python -u 然后程序加可執(zhí)行權(quán)限來運行,或者把 export PYTHONUNBUFFERED=1 寫到 .bashrc 里去。


附:stackoverflow上也有同學(xué)遇到類似問題,可以參考一下

地址:http://stackoverflow.com/questions/107705/python-output-buffering

被采納的代碼:

復(fù)制代碼 代碼如下:

class Unbuffered(object):
   def __init__(self, stream):
       self.stream = stream
   def write(self, data):
       self.stream.write(data)
       self.stream.flush()
   def __getattr__(self, attr):
       return getattr(self.stream, attr)

import sys
sys.stdout = Unbuffered(sys.stdout)
print 'Hello'

相關(guān)文章

  • Python3使用TCP編寫一個簡易的文件下載器功能

    Python3使用TCP編寫一個簡易的文件下載器功能

    這篇文章主要介紹了Python3使用TCP編寫一個簡易的文件下載器功能,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • python練習(xí)之循環(huán)控制語句 break 與 continue

    python練習(xí)之循環(huán)控制語句 break 與 continue

    這篇文章主要介紹了python循環(huán)控制語句 break 與 continue,break就像是終止按鍵,不管執(zhí)行到哪一步,只要遇到break,不管什么后續(xù)步驟,直接跳出當(dāng)前循環(huán)
    2022-06-06
  • 用pandas中的DataFrame時選取行或列的方法

    用pandas中的DataFrame時選取行或列的方法

    今天小編就為大家分享一篇用pandas中的DataFrame時選取行或列的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • python通過tcp發(fā)送xml報文的方法

    python通過tcp發(fā)送xml報文的方法

    今天小編就為大家分享一篇python通過tcp發(fā)送xml報文的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • python實現(xiàn)批量獲取指定文件夾下的所有文件的廠商信息

    python實現(xiàn)批量獲取指定文件夾下的所有文件的廠商信息

    這篇文章主要介紹了python實現(xiàn)批量獲取指定文件夾下的所有文件的廠商信息的方法,是非常實用的技巧,涉及到文件的讀寫與字典的操作等技巧,需要的朋友可以參考下
    2014-09-09
  • Python中six模塊基礎(chǔ)用法

    Python中six模塊基礎(chǔ)用法

    在本篇文章里小編給大家分享的是關(guān)于Python中six模塊基礎(chǔ)用法以及相關(guān)知識點,需要的朋友們學(xué)習(xí)下。
    2019-12-12
  • 解決Python?出現(xiàn)File?“<stdin>“,?line?1非語法錯誤的問題

    解決Python?出現(xiàn)File?“<stdin>“,?line?1非語法錯誤的問題

    這篇文章主要介紹了Python?出現(xiàn)File?“<stdin>“,?line?1非語法錯誤的解決辦法,本文給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • Python詳解argparse參數(shù)模塊之命令行參數(shù)

    Python詳解argparse參數(shù)模塊之命令行參數(shù)

    這篇文章主要介紹了Python詳解argparse參數(shù)模塊之命令行參數(shù),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考下面文章詳解
    2022-07-07
  • python利用百度AI實現(xiàn)文字識別功能

    python利用百度AI實現(xiàn)文字識別功能

    這篇文章主要為大家詳細(xì)介紹了python利用百度AI實現(xiàn)文字識別,主要涉及通用文字識別、網(wǎng)絡(luò)圖片文字識別、身份證識別等文字識別功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • Django數(shù)據(jù)映射(一對一,一對多,多對多)

    Django數(shù)據(jù)映射(一對一,一對多,多對多)

    本文主要介紹了Django數(shù)據(jù)映射(一對一,一對多,多對多),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08

最新評論