Python 자체의 Hang 현상때문에 프로레스가 출력 값을 리턴하지 않으면 강제 종료 하는 기능을 구현

파이썬에 의해 실행되는 프로그램이 30분이상 걸리지 않는 다는 전제 하에 실행하기로 한다.

파이썬 3.3+ 버전때부터는 프로세스를 실행하는 함수자체 내에서 timeoout 기능을 지원한다.

2.7 버전 subprocess:

https://docs.python.org/2/library/subprocess.htm

3.5 버전 subprocess

https://docs.python.org/3/library/subprocess.html

위 두버전의 문서를 체크해보면

2.7 버전에서

subprocess.check\_output(args, \*, stdin=None, stderr=None, shell=False, universal\_newlines=False)

3.5 버전에서

subprocess.call(args, \*, stdin=None, stdout=None, stderr=None, shell=False, timeout=None)

차이가 있는 것을 볼수 있다.

2점대 버전에서

* threading 을 이용해 우회적으로 구현하는 방법이 있긴 있다.

http://stackoverflow.com/questions/1191374/using-module-subprocess-with-timeout

* Hang현상은 프로세스에 말그대로 Hang(걸려)있는 현상으로 프로그램이 정상적으로 종료되지 않고 계속적으로 남아있는 현상이다.

* 추가팁:

파이썬 스크립트 동작 추적하기

python -m trace --trace 파이썬스크립트파일.py

참고자료:

http://stackoverflow.com/questions/3443607/how-can-i-tell-where-my-python-script-is-hanging

+ Recent posts