如何减少 sys.stdin 的缓冲区大小?

Linda Hamilton
发布: 2024-10-21 10:38:29
原创
722 人浏览过

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>
登录后复制

观察到在 memkeywatchYMD.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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板