def check_duplicate_execution(exact_python_file_name, pid):
for p in psutil.process_iter():
cmd = p.cmdline()
if cmd and exact_python_file_name in cmd and p.pid != pid:
return True
return False
파라미터는 비교할 파이썬 파일 이름인데 여기에서는 이것을 실행한 내 프로세스의 파일 이름을 전달합니다.
psutil.process_iter() 로 psutil.Process객체를 하나씩 가져와서 cmdline() 으로 얻어온 명령 줄에 해당 이름이 존재하는지 확인가능합니다.
cmdline() 은 리스트로 되어 있습니다. 보통은 파이썬 스크립트 이름은 cmdline()[1] 에 존재합니다. cmdline()[0] 은 python 이구요.
이 프로세스 목록에는 찾을 대상 자신도 들어있기 때문에 자신의 pid 를 구해서 같으면(밖에서 호출시 os.getpid() 를 호출하면 얻을 수 있습니다.) 무시하고 다른 경우에 중복으로 판단합니다.
결론은 파일 이름은 같은데 pid 가 다른 프로세스가 존재하는 지 찾는 함수입니다.
'IT > python' 카테고리의 다른 글
[python] 문자열 뒤집기 (0) | 2023.06.19 |
---|---|
[python][colab] 구글 드라이브 로그인하고 파일 접근하기 (0) | 2023.05.31 |
[python3] 버전별 차이 정리(작성중) (0) | 2023.05.03 |
[python3] 동일 값으로만 채워진 객체 확인하기 (0) | 2023.02.17 |
[python3] pathlib 으로 encoding 지정해서 파일 읽기 (0) | 2023.02.16 |