如何減少sys.stdin 的緩衝區大小
執行指令時:
<code class="bash">memcached -vv 2>&1 | tee memkeywatch2010098.log 2>&1 | ~/bin/memtracer.py | tee memkeywatchCounts20100908.log</code>
觀察到在memkeywatch> .log 大小超過15-18K 之前,memtracer.py 不會開始接收輸入。為了解決這個問題,有兩種方法:
使用無緩衝標誌(-u)
Python 提供了一個無緩衝標誌-u,可以從stdin/ stdout 中刪除緩衝。透過使用此標誌呼叫 Python:
<code class="bash">python -u ~/bin/memtracer.py</code>
您可以完全消除 stdin 和 stdout 的緩衝。
建立具有不同緩衝的新檔案對象
您也可以建立一個新的檔案對象,其底層檔案描述子與標準輸入相同,但緩衝區大小較小。這可以使用 os.fdopen 來實現:
<code class="python">import os import sys # Create a new file object with a buffer size of 100 bytes newin = os.fdopen(sys.stdin.fileno(), 'r', 100) # Assign the new file object to standard input sys.stdin = newin</code>
此程式碼應該可以讓您從標準輸入中讀取緩衝區大小僅為 100 位元組的內容,從而加快警報時間。請注意,此方法可能具有特定於平台的限制,因此建議進行徹底的測試。
以上是如何減少 sys.stdin 的緩衝區大小?的詳細內容。更多資訊請關注PHP中文網其他相關文章!