Python의 출력 버퍼링
Python에서 인쇄 기능은 기본적으로 성능 향상을 위해 출력을 버퍼링합니다. 이렇게 하면 터미널이 출력을 즉시 표시하지 못하게 되는데, 이는 스크립트 진행 상황을 모니터링할 때 문제가 될 수 있습니다.
버퍼링이 발생하는 이유
터미널은 통신을 수행하는 별도의 프로그램입니다. Python 스크립트로. 버퍼링은 특정 양이 누적되거나 개행 문자가 나타날 때까지 텍스트를 내부에 저장하여 터미널로 텍스트를 보내는 오버헤드를 줄여줍니다.
문제 해결
즉시 단일 인쇄
즉시 인쇄하려면 출력 버퍼를 명시적으로 플러시해야 합니다. Python 3.x에서는 인쇄 함수에 플러시 인수를 사용합니다.
for step in steps: run_simulation(step) print('.', end=' ', flush=True)
Python 2.x에서는 표준 출력 스트림에서 .flush 메서드를 호출합니다.
for step in steps: run_simulation(step) print '.', sys.stdout.flush()
버퍼링 비활성화
출력 라인 버퍼링을 완전히 비활성화하려면 버퍼를 수정하면 됩니다. size:
import sys sys.stdout.buffer.write(bytearray('Hello', 'utf-8')) # Use bytearray for Python 3.x sys.stdout.buffer.flush() # Manually flush the buffer as needed
또는 버퍼링되지 않은 래퍼를 사용할 수 있습니다:
import sys with open(sys.stdout.fileno(), mode='w', buffering=0) as f: # Writes directly to the terminal without buffering f.write('Hello')
위 내용은 내 Python 스크립트가 즉시 인쇄되지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!