RoBoLoG

[Python] 프로그램이 죽으면 다시 시작하는 Python 코드 본문

Study/Python

[Python] 프로그램이 죽으면 다시 시작하는 Python 코드

SKJun 2023. 10. 5. 11:44

프로그램이 죽으면 다시 시작하는 Python 코드

 

알 수 없는 오류로 프로그램은 계속 죽고

 

시연 날짜는 다가오고

 

쉽지 않은 하루가 이어지고 있습니다.

 

하지만 아래 코드를 통해 프로그램이 죽으면 다시 시작하도록 할 수 있습니다!

 

import psutil  # psutil 라이브러리를 임포트합니다. 이 라이브러리를 사용하여 프로세스를 관리합니다.
import subprocess  # subprocess 라이브러리를 임포트합니다. 이 라이브러리를 사용하여 외부 명령어를 실행합니다.
import time  # time 라이브러리를 임포트합니다. 이 라이브러리를 사용하여 시간 지연을 구현합니다.

# 실행 중인 프로세스 중에서 특정 프로세스 이름이 있는지 확인하는 함수를 정의합니다.
def is_process_running(process_name):
    for process in psutil.process_iter(attrs=['pid', 'name']):
        if process.info['name'] == process_name:
            return True  # 프로세스가 실행 중이면 True를 반환합니다.
    return False  # 프로세스가 실행 중이 아니면 False를 반환합니다.

while True:  # 무한 루프를 시작합니다.
    test_script_name = "test.py"  # 확인할 프로세스의 이름을 설정합니다.
    
    # 지정된 프로세스가 실행 중이 아니면 실행합니다.
    if not is_process_running(test_script_name):
        try:
            subprocess.run(["/path/to/file/run.sh"], check=True)  # 외부 스크립트를 실행합니다.
        except subprocess.CalledProcessError as e:
            print(f"Error: {e}")  # 실행 중 오류가 발생한 경우 오류 메시지를 출력합니다.
    
    # 10초마다 프로세스를 확인하고 실행 여부를 결정합니다.
    time.sleep(10)  # 10초 동안 프로그램을 일시 정지합니다.

 

아주 원시적이지만 확실한 방법입니다.

 

time.sleep으로 걸어놓은 시간이 너무 짧으면 프로그램이 중복 실행될 수 있으니까 조심하세요!

728x90
반응형