python防止程序多开,但程序运行脚本

LOG_FILE="./app.log"

PID_FILE="./PID.txt"

def log(message):

timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

line = f"{timestamp} {message}"

print(line)

with open(LOG_FILE, "a", encoding="utf-8") as f:

f.write(line + "\n")

def main():

p = multiprocessing.Process(target=realtime_predict_and_control)

p.start()

log(f"启动任务进程 PID={p.pid}")

p.join()

def is_main_process_running():

"""检查 PID 文件中的主进程是否仍在运行"""

if not os.path.exists(PID_FILE):

return False

try:

with open(PID_FILE, "r", encoding='utf-8-sig') as f:

pid = int(f.read().strip())

except:

return False

return psutil.pid_exists(pid)

def write_pid():

"""写入当前主进程 PID"""

with open(PID_FILE, "w") as f:

f.write(str(os.getpid()))

==========================

入口

==========================

if name == "main ":

multiprocessing.freeze_support()

复制代码
if is_main_process_running():
    log("已有实例在运行(主进程存在),退出。")
    time.sleep(3)
    sys.exit(0)

write_pid()
main()
相关推荐
小蒜学长4 分钟前
基于Django+Vue喵汪联盟宠物领养系统的设计与实现(代码+数据库+LW)
后端·python·django·宠物领养系统·流程规范化
昂好的day9 分钟前
WPF 从零入门(上):WPF 是什么、XAML 语法、布局与样式全解
开发语言·c#·wpf
飞浪纪元[FWC–FE]12 分钟前
Qt 构建排错实录:从 MSB 1009 到生成器选型
开发语言·数据库·qt
fly-iot13 分钟前
【FDE知识库】(1):AI 编程时代开发语言选型分析,云使用go,企业用java,算法python,底层c
开发语言·人工智能·golang
云边有个稻草人13 分钟前
Prometheus Pushgateway教程:离线任务指标上报、Shell与Python示例、远程访问
开发语言·python·prometheus
暴走约伯16 分钟前
【VFX工具链源码拆解 01】总体架构:大型项目特效流程的程序化落地
开发语言·经验分享·3d·unity·架构·游戏引擎
fanruitian27 分钟前
pycharm 使用anaconda
ide·python·pycharm
Dwzun30 分钟前
基于SpringBoot3+Vue3的油莎豆种植管理系统
java·前端·vue.js·spring boot·后端·python·计算机网络
代码山河9 小时前
Python就业方向全解析:后端、爬虫、数据分析、AI你选哪个?
python·学习·架构·教程·面向对象·项目
在世修行9 小时前
智学文枢:题目流水线
python·多线程·状态机·pyside