2013-01-08 2 views
3

실제로 프로그램을 끝내고 나면 CPython 3.2 인터프리터는 거의 2 분 동안 가비지 콜렉션을 수행합니다. known issue입니다.가비지 콜렉션을 실행하지 않고 Python 인터프리터를 종료합니다.

다행히도, 제 경우에는 프로그램이 끝날 때까지 가비지 콜렉션을 수행 할 필요가 없습니다. 따라서 실행이 끝나면 프로그램을 종료하는 방법을 찾아야 만합니다. gc.collect()을 실행할 기회가 없습니다.

Windows에서 'CTRL + C'키를 누르면됩니다. 나는 또한 파이썬 인터프리터의 프로세스 ID를 찾고 OS 호출을 사용하여 그것을 죽일 수 있다고 생각한다.

순수 Python (예외 또는 표준 라이브러리 호출)을 사용하여 동일한 효과를 얻을 수있는 방법이 있습니까? 플랫폼에 독립적일까요?

답변

6
import os 
os._exit(0) 

소멸자가 유용한 조치를 취할 수 있기 때문에 권장하지 않습니다. 소멸자가 작동 할 필요가 없다고 확신하는 경우, 이것이 효과가 있습니다.

+0

이것은 완벽합니다. 이것을 사용할 때 어떤 유형의 것을 알아야합니까? 소멸자가 실행되지 않더라도 파일 핸들과 네트워크 연결이 여전히 OS에 의해 공개되기를 바랍니다. – max

+2

@max : 운영 체제 *는 시스템 리소스 정리를 수행 할 수 있어야합니다. 더 걱정되는 부분은 응용 프로그램입니다. 예를 들어, 응용 프로그램이 일종의 다중 단계 파일 조작을 수행하려고하고 중간에 파일을 잘라내는 경우, 파일은 일관성있는 상태가 아닐 수 있습니다. – icktoofay

+1

'atexit' (여러분이나 사용중인 라이브러리에 의해)로 등록 된 루틴은'_exit'을 사용할 때 실행되지 않습니다. –

관련 문제