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 중국어 웹사이트의 기타 관련 기사를 참조하세요!