#!python # -*- mode: python; Encoding: utf-8; coding: utf-8 -*- # Last updated: <2022/08/13 20:15:55 +0900> """ Python mutex sample. Windows only. Windows10 x64 21H2 + Python 3.9.13 64bit """ import win32event import win32api import winerror import win32security import time import sys MUTEXNAME = "python_mutex_sample_01" def main(): sa = win32security.SECURITY_ATTRIBUTES() sa.SECURITY_DESCRIPTOR.SetSecurityDescriptorDacl(True, None, False) mtx = win32event.CreateMutex(sa, False, MUTEXNAME) err = win32api.GetLastError() if not mtx or err == winerror.ERROR_ALREADY_EXISTS: # Process exists print("%s already exists" % MUTEXNAME) sys.exit(0) else: # New process print("New process.") for i in range(10): print(i) time.sleep(1) if mtx: # win32event.ReleaseMutex(mtx) # win32api.CloseHandle(mtx) mtx.Close() if __name__ == '__main__': main()