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은 stdin/stdout에서 버퍼링을 제거하는 버퍼되지 않은 플래그 -u를 제공합니다. 다음 플래그로 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으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿