python 阻止程序并行运行(pypiwin32模块)

互斥量:
采用互斥对象机制。互斥锁,像一个物件,这个物件只能同时被一个线程持有。 只有拥有互斥对象的线程才有访问公共资源的权限,因为互斥对象只有一个,所以能保证公共资源不会同时被多个线程访问。互斥不仅能实现同一应用程序的公共资源安全共享,还能实现不同应用程序的公共资源安全共享。

这里使用的是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)

你可能感兴趣的:(python,windows)