互斥量:
采用互斥对象机制。互斥锁,像一个物件,这个物件只能同时被一个线程持有。 只有拥有互斥对象的线程才有访问公共资源的权限,因为互斥对象只有一个,所以能保证公共资源不会同时被多个线程访问。互斥不仅能实现同一应用程序的公共资源安全共享,还能实现不同应用程序的公共资源安全共享。
这里使用的是windows的互斥量,使用前需要安装pypiwin32
模块
pip install pypiwin32
使用win32event.CreateMutex
创建锁,在当前进程结束后自动释放锁,保证在同一时刻只有一个程序示例在运行,具体代码为:
import time
import win32api
import win32event
from winerror import ERROR_ALREADY_EXISTS
if __name__ == '__main__':
mutexname = "自定义ID标识"
mutex = win32event.CreateMutex(None, False, mutexname)
if win32api.GetLastError() == ERROR_ALREADY_EXISTS:
print('程序已启动')
exit(0)
else:
print('启动程序')
# 模拟用户操作
while True:
time.sleep(1)