防止python进程重复执行

文章介绍了一个Python脚本,通过读取和写入进程ID文件,检测指定进程是否正在运行。如果进程在执行,脚本会退出;否则,会启动新的Python进程并保存其PID。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

通过保存的进程pid查询上次执行的进程是否退出,决定是否启动新的python进程

代码

pidOption.py

import os
import psutil
pidPath = "saveFile.pid"

#写入进程号
def writePid():
    pid = str(os.getpid())
    f = open(pidPath, 'w')
    f.write(pid)
    f.close()

#读取进程号
def readPid():
    try:
        with open(pidPath, 'r+') as f:
            line = f.readline()
            print("saved pid: ",line)
            pid = int(line)
            return pid
    except FileNotFoundError:
        return -1

# 判断某个程序是否在运行
# 原理:获取保存的pid,通过pid获取程序名,再按程序名进行判断
def ifProcessRunning():
    processName = getProcessName()
    result = False
    pidRunning = readPid()
    if pidRunning == -1:
        return result
    try:
        if (psutil.Process(pidRunning).name() == processName):
            result = True
    except psutil.NoSuchProcess:
        result = False
    return result

#获取当前进程名
def getProcessName():
    # 获取当前进程的PID
    pid = os.getpid()
    # 根据PID获取当前进程的名字
    process = psutil.Process(pid)
    process_name = process.name()

    print("当前进程的名字是:", process_name)
    return process_name

main.py

import os
import sys
from pidOption import writePid,ifProcessRunning

runFlag = ifProcessRunning()
#若原程序在执行中,则退出
if runFlag :
    print("process is running!")
    sys.exit(0)
#若原程序未执行,则写入新的进程pid
writePid()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码客_人工智能创客高级指导师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值