使用給定的命令模式執行 memcached 時,memtracer 會花費相當多的時間。 py 腳本開始接收輸入。這是由於 sys.stdin 的緩衝區大小較大,這對於所需的操作並不是最佳的。本文探討了解決此問題的兩種方法,包括無緩衝輸入/輸出和使用 os.fdopen。
Python 提供了一個方便的選項來從 stdin/ 中刪除緩衝stdout 完全使用 -u 標誌。可以在運行命令時指定:
<code class="bash">memcached -vv 2>&1 | tee memkeywatch2010098.log 2>&1 | ~/bin/memtracer.py | tee memkeywatchCounts20100908.log -u</code>
或者,您可以建立一個與現有文件對象具有相同文件描述符的新文件對象,但是改變緩衝。這涉及使用os.fdopen 函數:
<code class="python">import os import sys newin = os.fdopen(sys.stdin.fileno(), 'r', 100)</code>
這將建立一個新的檔案物件newin,它從與標準輸入(sys.stdin) 相同的檔案描述符中讀取,但緩衝區大小僅為100 位元組。然後,您可以使用 newin 作為標準輸入物件。
-u 標誌和 os.fdopen 都提供了減少 sys.stdin 中緩衝的有效方法。雖然 -u 標誌完全刪除緩衝,但 os.fdopen 在設定自訂緩衝區大小方面提供了更大的靈活性。徹底測試這些方法非常重要,以確保與不同平台的兼容性並滿足特定的效能要求。
以上是如何減少 sys.stdin 的緩衝區大小以最佳化輸入處理?的詳細內容。更多資訊請關注PHP中文網其他相關文章!