문제와 목표

리스트 무한 증가에서 바꿀 결과와 유지할 기존 동작을 한 문장씩 적습니다. list에 항목을 제한 없이 append하면 참조가 유지돼 garbage collection 대상이 되지 않으므로 queue·batch 크기에 상한이 필요합니다.

원인에 맞는 준비

종료 조건이 외부 입력이나 반복 중 바뀌는 값에 의존하는지 확인합니다. 반복마다 새 객체·Promise·로그가 생기면 CPU뿐 아니라 heap, queue와 로그 디스크도 함께 소진됩니다. 현재 version의 공식 문서와 실제 설정을 확인하고 대표·경계·실패 사례를 준비합니다. py-spy/cProfile, tracemalloc, gc 통계, RSS, task와 file descriptor를 재현 입력과 함께 측정한다.

순서 할 일
1 수정 전 결과와 되돌릴 기준 저장
2 핵심 사실과 맞닿은 한 곳만 변경
3 같은 입력으로 수정 전후 비교

해결 순서와 완료 조건

최대 반복·재귀 깊이, 실행 시간, 출력 크기와 취소 신호를 코드 경계에 둡니다. 신뢰할 수 없는 코드는 별도 worker나 process에서 강제 종료가 가능해야 합니다. CPU와 I/O 작업을 구분하고 iterator, context manager, timeout, process·thread 선택을 측정 결과로 결정한다. 예상과 다르면 변경을 더 얹지 말고 처음 달라진 값으로 돌아갑니다. 입력 크기별 시간·메모리 복잡도, 장시간 RSS 기준선, 열린 자원과 취소 후 task를 확인한다. 의도적인 비종료 입력과 큰 입력을 넣어 제한 시간 안에 중단되고 task·메모리·파일·연결이 남지 않는지 검사합니다.

공식 문서와 적용 범위

문서의 기본값과 동작은 version에 따라 달라질 수 있습니다. 현재 Python 구현과 version, dependency, 입력 크기와 실행 환경에서 다시 확인합니다.