Python은 기본적으로 출력을 터미널과 같은 다른 프로그램에 개별적으로 전송하는 대신 한꺼번에 전송하여 성능을 향상시키기 위해 출력을 버퍼링합니다. 개행 문자가 없으면 print 문은 일반적으로 한 번에 한 줄씩 버퍼링되므로 의도한 텍스트 표시가 지연됩니다.
단일 인쇄 문의 경우:
for _ in range(10): print('.', end=' ', flush=True) time.sleep(.2) # or other time-consuming work
for _ in range(10): print '.', sys.stdout.flush() time.sleep(.2) # or other time-consuming work
다중 인쇄 명령문의 경우:
각 인쇄를 개별적으로 플러시하는 대신 라인 버퍼링을 완전히 비활성화할 수 있습니다. 몇 가지 가능한 해결 방법은 다음과 같습니다.
환경 변수 PYTHONUNBUFFERED를 True로 설정합니다.
export PYTHONUNBUFFERED=1
fcntl 모듈을 사용하여 파일 설명자를 조작합니다.
import fcntl stdout_fileno = sys.stdout.fileno() fcntl.fcntl(stdout_fileno, fcntl.F_SETFL, os.O_NONBLOCK)
이러한 기술을 구현하면 출력이 터미널에 즉시 표시되어 더욱 유익하고 대화형인 스크립트 실행 중 경험.
위 내용은 Python 출력이 지연되는 이유는 무엇이며 실시간으로 표시되도록 하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!