>백엔드 개발 >파이썬 튜토리얼 >Python 출력이 지연되는 이유는 무엇이며 실시간으로 표시되도록 하려면 어떻게 해야 합니까?

Python 출력이 지연되는 이유는 무엇이며 실시간으로 표시되도록 하려면 어떻게 해야 합니까?

DDD
DDD원래의
2024-11-12 11:31:02577검색

Why is my Python output delayed, and how can I make it appear in real-time?

Python의 지연된 터미널 출력 이해

Python은 기본적으로 출력을 터미널과 같은 다른 프로그램에 개별적으로 전송하는 대신 한꺼번에 전송하여 성능을 향상시키기 위해 출력을 버퍼링합니다. 개행 문자가 없으면 print 문은 일반적으로 한 번에 한 줄씩 버퍼링되므로 의도한 텍스트 표시가 지연됩니다.

문제 해결

단일 인쇄 문의 경우:

  • 파이썬 3.x: 아래와 같이 인쇄 함수에서 플러시 매개변수를 활용하여 출력을 명시적으로 플러시합니다.
for _ in range(10):
    print('.', end=' ', flush=True)
    time.sleep(.2)  # or other time-consuming work
  • Python 2.x: 강제 출력을 위한 sys.stdout 스트림 전송:
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)
  • 사용 tqdm 또는 joblib와 같은 타사 라이브러리를 사용하여 진행률 표시줄에 실시간 업데이트를 제공합니다.

이러한 기술을 구현하면 출력이 터미널에 즉시 표시되어 더욱 유익하고 대화형인 스크립트 실행 중 경험.

위 내용은 Python 출력이 지연되는 이유는 무엇이며 실시간으로 표시되도록 하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.