본문 바로가기
Python

Python - -u PYTHONUNBUFFERED 사용

by 올엠 2024. 3. 25.
반응형

Python을 Docker 혹은 백그라운드에서 사용하는 빈도가 높아지면서 -u/PYTHONUNBUFFERED 를 사용하는 일이 많아졌다.

-u/PYTHONUNBUFFERED를 사용하면 Python 출력 내용을 버퍼에 넣지 않고 바로 출력하라는 의미가 된다.

프로세스를 백그라운드로 실행시에는 -u를 많이 사용하고, 

Docker와 같이 시스템 자체에 적용하는 PYTHONUNBUFFERED 도 사용할 수 있다.

-u
force the stdout and stderr streams to be unbuffered; this option has no effect on stdin; also PYTHONUNBUFFERED=x

예로 nohup 백그라운드 실행을 해보면 -u 옵션이 없는 경우 nohup.out에 출력내용이 없는 것을 알 수 있다. 즉 현재 버퍼링 중이고 출력은 나중에 되기 때문이다.

~ $ vi file.py

import time



print('hello')

time.sleep(10)



~ $ nohup python3 file.py &

[1] 25631

~ $ appending output to nohup.out

tail -f nohup.out 

hello

위 코드를 실행해보면 아래와 같이 hello가 바로 출력이 되지 않는 것을 알 수 있다.

 

하지만 -u 옵션을 사용하면 바로 출력 된다.

Docker에서는 PYTHONUNBUFFERED를 이용할 수 있다. 1의 의미를 true를 의미한다.



 

반응형