본문 바로가기

Programming/Python

[Python] 프로그램 중복 실행 방지 코드 (실행 중인 프로세스 목록 확인)

pyinstaller 등으로 exe 파일을 만든 경우

 

실행 중인 프로세스 목록을 확인하여

 

사용자가 중복으로 실행하지 못하도록 막아야할 때가 있다.

 

import psutil

__PROCESS_NAME__ = "TEST" # 프로그램 이름

process_name_list = []
for process in psutil.process_iter(attrs=['name', 'exe']):
    if process.info['exe'] and \
        process.info['name'] == f"{__PROCESS_NAME__}.exe":
        process_name_list.append(process.name())

if process_name_list.count(f"{__PROCESS_NAME__}.exe") > 1: # 프로그램 실행 중
    print("프로그램 중복 실행 시도")
else:
    print("프로그램 실행 성공")

 


 

** 아래는 wmi 라이브러리를 이용한 코드

 

속도가 위 코드에 비해 현저히 오래 걸리므로 비추천

 

import wmi

wmi_obj = wmi.WMI()

process_list = wmi_obj.Win32_Process()
for process in process_list:
    print(process.Name, process.ProcessId, process.ExecutablePath)