데드락이 걸렸는데 코드를 봐도 어디인지 모를 때가 있다. 자바는 JVM이 쓰레드 덤프 기능을 제공해서 어떤 쓰레드가 어디서 멈춰 있는지 확인하기 쉬웠는데 파이썬은 쓰레드 덤프를 얻으려면 약간의 코딩이 필요하다.
아래와 같이 모든 쓰레드의 스택 트레이스를 볼 수 있다.
for ident, stack in sys._current_frames().items():
logger.info(("%d" % ident) + "".join(traceback.format_list(traceback.extract_stack(stack))))
어떤 쓰레드가 멈춰 있는지 안다면 그 쓰레드의 스택 트레이스만 볼 수 있다.