簡體   English   中英

Python sys.stderr 刷新頻率

[英]Python sys.stderr flush frequency

sys.stderr 多久刷新一次緩沖區,這是不同環境之間的標准嗎?

>>> import sys
>>> sys.__stderr__
<open file '<stderr>', mode 'w' at 0x2b4fcb7ac270>

我看到它只是一種標准文件類型,但我不知道它應該是什么緩沖值。 dir()似乎也沒有產生任何有用的信息。

更新sys.stderr自 Python 3.9 起默認為行緩沖。 如果python收到-u命令行選項或設置了$PYTHONUNBUFFERED環境變量,則 stdout 和 stderr 流將被強制無緩沖(包括自 Python 3.7 起的文本層)。


舊答案:

在 Python 2 上,我無法在文檔sys.stderr的緩沖中找到指定的位置。 我希望與C 中無緩沖的stderr行為相同(Windows 除外) ,我不知道 c99 標准是否要求這樣做。 標准錯誤流在 POSIX 中沒有完全緩沖 -u選項強制標准流在 Python 2 中無緩沖

在 Python 3 上

交互時,標准流是行緩沖的。 否則,它們像常規文本文件一樣被塊緩沖。 您可以使用-u命令行選項覆蓋此值。

-u命令行選項

強制 stdout 和 stderr 流的二進制層(可用作它們的buffer屬性)無緩沖。 如果寫入控制台,文本 I/O 層仍將被行緩沖,如果重定向到非交互式文件,則將被塊緩沖。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM