一、序
在一些条件下,一个设备只需要运行一个进程,Python打包的exe只能运行一次的情况
二、实现思路
获取所有进程,判断是否已经有了该线程。没有输出1,有输出0
三、实现代码
def onlyOneSelf():
pids = psutil.pids() # 获取所有进程PID
list = [] # 空列表用来存储PID名称
i = 0 # 计数,程序名称出现的次数
for pid in pids: # 遍历所有PID进程
p = psutil.Process(pid) # 得到每个PID进程信息
list.append(p.name()) # 将PID名称放入列表
s = str(p.name()) # 将PID名称转换成字符串进行判断
if s == "三期实时同步数据.exe": # “123.exe”你要防多开进程的名称
i += 1
if i <= 2: # 如果这个程序名称在程序管理器中出现次数少于两次,执行以下代码
# while True:
# print("好")
return 1
else: # 这个程序名称在任务管理器中出现两次以上,进行程序关掉
pidd = os.getpid() # 获取当前PID名称
cmd = 'taskkill /pid ' +pidd+ ' /f' # 输入关闭名称命令
try: # 程序防抱死,用try和except
os.system(cmd) # 打开系统命令行,将上面的命令导入,即可关掉重复程序
except Exception as e:
return 0