규도자 개발 블로그
Python 프로세스 킬러 (Process killer) 본문
파이썬 프로세스 킬러
프로세스단위에서 프로세스를 죽이는 스크립트이다.
내가 개인적인 용도로 사용했을 땐 내가 돌리고 있는 퀀트프로그램에서 웹소켓이 깨졌을 때 해당 프로세스를 전부 종료하고 다시 시작하기 위해서 사용했다. 왜인고 하면 거래소의 거래량이 폭증하면 웹소켓부터 끊어지곤 하는데 from websockets.exceptions import ConnectionClosedError
로 예외처리를 하더라도 동시에 여러개의 웹소켓과 연결된 상태라면 한 개의 웹소켓만 꺼지고 다른 건 돌아가고 있으므로 프로세스 자체는 계속 유지됐다. 하지만 그래선 돌아가고 있는 의미가 없으므로 해당 프로세스를 전부 죽이는 용도로 사용하였다.
한가지 간단한 예제를 작성해보자면
이런 함수가 있으면 count가 0이 되는 순간 꺼지지만 여기에 process killer를 껴놓으면 0이 되기 전에 프로세스 그 자체를 종료시킬 수 있다.
위 스크립트를 실행해보면 함수가 어떻게 작동되는지 정확히 파악할 수 있다. process_name
에 원하는 프로세스 이름을 인자로 넘겨주면 해당 프로세스를 완전히 kill할 수 있다. 뭐 당연한 얘기겠지만 권한문제도 고려해야 한다. 만약에 특정 스크립트를 실행하는 그 파이썬 내부에서 적용시키려면 간단하게 __file__.split('/')[-1]
를 통해서 현재 스크립트가 돌아가고 있는 파일의 이름을 가져올 수 있으니 이렇게 처리해도 된다. 예제에 적용해보면
이런 형태가 된다.
'Python > Python' 카테고리의 다른 글
파이썬의 유닛테스트를 한번에 파악할 수 있는 코드 (0) | 2022.05.17 |
---|---|
파이썬의 이스터에그 (0) | 2022.05.16 |
[Python] csv를 dict로 (1) | 2022.02.09 |
파이썬 스크립트 terminal에서 실행할 때 ModuleNotFoundError 해결하기 (0) | 2022.01.09 |
Python에서 setInterval함수 쓰기 (특정 시간마다 함수 반복하기) (0) | 2022.01.08 |