저는 파이썬에 문제가있는 것 같습니다. 파이썬 2.7.13과 파이썬 3.6.0을 레드햇 엔터프라이즈 리눅스 서버 릴리즈 7.1 (마이 포)에서 사용했습니다. 프로세스 출력을 모니터링하기 위해 tail -f
을 사용하여 STDOUT 및 STDERR을 실시간으로 살펴 봅니다. 여기에있는 키워드는 버퍼링되지 않은 출력입니다. 인터넷에서 많은 제안은 python -u ...
또는 PYTHONUNBUFFERED=1 python ...
또는 stdbuf -e0 -o0 python ...
과 같은 환경 변수 PYTHONUNBUFFERED를 사용한다고 말합니다. 그럼에도 불구하고 다음 테스트 스크립트에는 아무 것도 없습니다.파이썬이 버퍼링되지 않은 모드에서 작동하지 않습니다.
import sys
import time
while(True):
print("Test String")
time.sleep(1);
다른 모든 명령의 경우 항상 출력이 버퍼링됩니다. STDERR을 사용할 때도 마찬가지입니다. STDERR이 기본적으로 버퍼링되지 않아야하기 때문에 여전히 혼란 스럽습니다. sys.stdout.flush()
또는 sys.stderr.flush()
을 사용하는 것도 작업을 수행하지 않습니다. print()
안에 flush=True
을 사용하면 의도 한대로 작동합니다.
버퍼를 사용하지 않고 즉시 출력을 플러시하기 위해 모든 프로그램을 편집 할 수 없기 때문에 코드를 편집하지 않아도되는 솔루션을 찾고 있습니다. 이것을 어떻게 할 수 있습니까?
답변을 기다리십시오!
당신은 당신의 테스트 스크립트가 무엇을 기대합니까? –
'print (flush = True)'함수를 무시할 수 있습니다. –
그래서 원본 스크립트에는 모니터하고 싶은 심층 학습 및 신경망 단계가 포함되어 있습니다. 내 테스트 스크립트에서 출력을 버퍼링하지 않는지 확인하기 위해 더미 출력으로 좁혔다. @ElisByberi 때문에 코드를 편집해야합니다. 어떤 프로그램은 너무 거대해서 모든 것을 편집하기 위해 혼란 스러울 것입니다. 나는'python -u' 또는'PYTHONUNBUFFERED'를 찾고 있습니다. 대신 그들이 왜 작동하는지 알지 못합니다. 광고 된대로 작동하지 않습니다. – TheOrangeman