[Python] 단 하나의 프로세스만 실행 허용하기
필요에 의해 Python 스크립트가 실행 중일 때 동일한 스크립트가 실행되지 못 하도록 하는 방법.
1. 심플하게 생각하자.
그냥 스크립트 실행 시 /tmp/에 특정 이름의 파일을 만들고 이 파일이 이미 존재한다면 실행을 종료시키고, 스크립트가 정상적으로 종료될 때 이 파일을 지운다.
이렇게 만들면 굉장히 단순명료하지만, 정상적으로 실행이 종료되지 않으면 임시 파일이 남게 되므로 영원히 이 스크립트를 다시는 실행할 수 없게 되는 치명적인 단점이 있다.
2. 귀찮아! tendo를 쓰자
easy_install 혹은 pip를 이용해 tendo를 설치하자. 직접 http://pypi.python.org/pypi/tendo 에서 찾아볼 수도 있다. 설명을 보면 굉장히 많은 기능을 제공하지만 여기서는 순순히 singleton process를 위해서만 사용한다.
아래 코드를 스크립트 시작 지점에 삽입한다.
추신. 윈도우가 없다보니 윈도우에서 돌아가는지 여부는 확인해 보지 않았다 :P
1. 심플하게 생각하자.
그냥 스크립트 실행 시 /tmp/에 특정 이름의 파일을 만들고 이 파일이 이미 존재한다면 실행을 종료시키고, 스크립트가 정상적으로 종료될 때 이 파일을 지운다.
이렇게 만들면 굉장히 단순명료하지만, 정상적으로 실행이 종료되지 않으면 임시 파일이 남게 되므로 영원히 이 스크립트를 다시는 실행할 수 없게 되는 치명적인 단점이 있다.
2. 귀찮아! tendo를 쓰자
easy_install 혹은 pip를 이용해 tendo를 설치하자. 직접 http://pypi.python.org/pypi/tendo 에서 찾아볼 수도 있다. 설명을 보면 굉장히 많은 기능을 제공하지만 여기서는 순순히 singleton process를 위해서만 사용한다.
아래 코드를 스크립트 시작 지점에 삽입한다.
from tendo import singleton me = singleton.SingleInstance()이제 이 스크립트는 한 하나의 프로세스만 실행되는 것을 허용한다. 만약 이미 해당 스크립트의 프로세스가 실행중일 때는 아래와 같은 오류를 내뿜으며 종료된다.
WARNING:username:Another instance is already running, quitting.귀찮을 땐 친절한 분이 만들어 놓으신 외부 도구가 역시 도움이 많이 된다. 아 너무 친절하셔 :-)
추신. 윈도우가 없다보니 윈도우에서 돌아가는지 여부는 확인해 보지 않았다 :P
댓글