주어진 명령 패턴으로 memcached를 실행할 때 memtracer에 상당한 시간이 걸립니다. py 스크립트를 사용하여 입력 수신을 시작합니다. 이는 sys.stdin의 버퍼 크기가 커서 원하는 작업에 적합하지 않기 때문입니다. 이 문서에서는 버퍼링되지 않은 입력/출력 및 os.fdopen 사용을 포함하여 이 문제를 해결하는 두 가지 방법을 살펴봅니다.
Python은 stdin/에서 버퍼링을 제거하는 편리한 옵션을 제공합니다. -u 플래그를 완전히 사용하는 stdout. 이는 다음 명령을 실행할 때 지정할 수 있습니다:
<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>
이것은 표준 입력(sys.stdin)과 동일한 파일 설명자에서 읽는 새 파일 객체 newin을 생성하지만 버퍼 크기는 100바이트. 그런 다음 newin을 표준 입력 개체로 사용할 수 있습니다.
-u 플래그와 os.fdopen 모두 sys.stdin에서 버퍼링을 줄이는 효과적인 방법을 제공합니다. -u 플래그는 버퍼링을 완전히 제거하는 반면, os.fdopen은 사용자 정의 버퍼 크기 설정에 더 많은 유연성을 제공합니다. 다양한 플랫폼과의 호환성을 보장하고 특정 성능 요구 사항을 충족하려면 이러한 접근 방식을 철저히 테스트하는 것이 중요합니다.
위 내용은 최적화된 입력 처리를 위해 sys.stdin의 버퍼 크기를 줄이는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!