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
'Python' 카테고리의 다른 글
Jupyter notebook (ipython notebook) (0) | 2016.10.08 |
---|---|
python 현재 사용하고 있는 os 알아보기 (0) | 2016.09.22 |
Python Logging (파이썬 로깅) (0) | 2016.07.23 |
python 에서 현재 로그인된 유저이름 가져오기 (0) | 2016.07.20 |
Python 에서 시스템 명령어 사용하기 (0) | 2016.04.21 |