python防止程序多开,打包EXE实现

使用到系统os模块和psutil模块实现

一、psutil模块:

1.psutil是一个跨平台库(http://pythonhosted.org/psutil/)能够轻松实现获取系统运行的进程和系统利用率(包括CPU、内存、磁盘、网络等)信息。它主要用来做系统监控,性能分析,进程管理。它实现了同等命令行工具提供的功能,如ps、top、lsof、netstat、ifconfig、who、df、kill、free、nice、ionice、iostat、iotop、uptime、pidof、tty、taskset、pmap等。目前支持32位和64位的Linux、Windows、OS X、FreeBSD和Sun Solaris等操作系统.

二、代码实现:

首先导入os和psutil模块

import os
import psutil

然后执行以下代码,注释很清楚,细看

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名称转换成字符串进行判断
    print(s)
    if s =="123.exe":             #“123.exe”你要防多开进程的名称
        i+=1

接下来进行条件判断

if i<2:                           #如果这个程序名称在程序管理器中出现次数少于两次,执行以下代码

                  





                #这里输入你所要进行的主程序





     
else:                            #这个程序名称在任务管理器中出现两次以上,进行程序关掉
   
 pidd=os.getpid()               #获取当前PID名称
   
 cmd = 'taskkill /pid ' + "pidd" + ' /f'         #输入关闭名称命令
    
 os.system(cmd)              #打开系统命令行,将上面的命令导入,即可关掉重复程序 

以上就是可以实现的所有代码,套入这个公式,将自己程序打包即可实现。

注意:123.exe  是我的应用名,得改成你的,自己可以在任务管理器找找名称

我自己写了一个简单的demo,可以试着打包运行一下。

import os
import psutil
import cv2
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名称转换成字符串进行判断
    print(s)
    if s =="123.exe":             #“123.exe”你要防多开进程的名称
        i+=1
print(list)
print(i)
if i<2:                           #如果这个程序名称在程序管理器中出现次数少于两次,执行以下代码
    # while True:
    #     print("好")
    im1 = cv2.imread(r"E:\\photos\\wangzai.png")
    cv2.namedWindow("im1", cv2.WINDOW_NORMAL)  # namedWindow 窗口名称+窗口类型 cv2.WINDOW_NORMAL(窗口大小可以拖动)
    cv2.imshow("im1", im1)
    cv2.waitKey(0)

else:                            #这个程序名称在任务管理器中出现两次以上,进行程序关掉
    pidd=os.getpid()               #获取当前PID名称
    cmd = 'taskkill /pid ' + "pidd" + ' /f'         #输入关闭名称命令
    try:                            #程序防抱死,用try和except
        os.system(cmd)              #打开系统命令行,将上面的命令导入,即可关掉重复程序
    except:
        im1 = cv2.imread(r"E:\\photos\\gray.jpg")
        cv2.namedWindow("im1", cv2.WINDOW_NORMAL)  # namedWindow 窗口名称+窗口类型 cv2.WINDOW_NORMAL(窗口大小可以拖动)
        cv2.imshow("im1", im1)
        cv2.waitKey(0)

im1 = cv2.imread(r"E:\\photos\\wangzai.png")这一块记的放自己照片路径,不然报错

最后记得打包一下程序,才能实现exe程序防多开,如何打包看这里

(1条消息) python利用pyinstaller打包文件_幼稚园码农的博客-CSDN博客

如有帮助,记得点赞三连

  • 1
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python中,可以使用进程判断来防止多开。首先,需要导入必要的模块,如os、sys、psutil和tkinter。然后,可以使用psutil模块的pids()函数获取所有进程的PID。接下来,创建一个空列表来存储PID名称。使用循环遍历所有PID进程,并使用psutil模块的Process()函数获取每个PID进程的信息,并将PID名称放入列表中。将PID名称转换成字符串后,可以使用条件判断来判断是否存在指定的程序名称。如果存在,则表示程序已经被打开,可以执行相应的操作,如弹出提示框或关闭程序。如果不存在,则表示可以启动程序。可以根据具体需求进行相应的操作。以上是一个示例代码,可以根据实际情况进行修改和调整。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [python gui程序禁止程序二次启动](https://blog.csdn.net/zy0412326/article/details/128878564)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [python 防止程序多开](https://blog.csdn.net/hegui1997/article/details/88534172)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [python防止程序多开打包EXE实现](https://blog.csdn.net/qq_45507518/article/details/123269026)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值