如何減少 sys.stdin 的緩衝區大小?

Linda Hamilton
發布: 2024-10-21 10:38:29
原創
602 人瀏覽過

How to Reduce Buffer Size for sys.stdin?

如何減少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中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!