sys.stderr 출력을 메모리상의 string IO buffer로 전달하여 print 하는 방법
import io → fake_stderr = io.StringIO()
import contextlib → with
contextlib.redirect_stderr(fake_stderr):
print(fake_stderr.getvalue())
- 메모리 부가 비용
- 스레드 시작 비용
- 컨텍스트 전환 비용
- 복잡한 lock(동기화 코드) 이용
- 공유 메모리를 사용하는 더 고급스러운 기능을 제공한다.
- 하지만, 이러한 고급 기능을 사용하는 것은 매우 복잡하며, 한 프로세스 내에서 여러 스레드 사이에 공유되는 메모리 공간을 추론하기가 쉽지 않다.
- 그러한 복잡도를 다른 프로세스까지 확장하고 소켓까지 추가하면 프로그램의 동작을 이해하기 더 어려워진다.
- 이 고급스러운 기능 사용은 다른 모든 패키지들을 사용해보고도 안되면, 제일 마지막 단계에 시도하라.
동작 방식은 아래와 같다 (예시로 설멍)