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()
相关推荐
Sirius.z4 小时前
第R6周:LSTM实现糖尿病探索与预测
python
名字还没想好☜4 小时前
Python f-string 进阶:数字格式化、对齐填充、调试 = 号与嵌套表达式
开发语言·数据库·python·字符串格式化·f-string
·薯条大王4 小时前
经济实惠玩云服务器|一台云服务器多人共用,子账号配置教程
java·linux·运维·服务器·汇编·c++·python
Dxy12393102165 小时前
Python 如何使用 MySQL 的事务
python·mysql
YB13757 小时前
jetpack compose 副作用 SideEffect
android·kotlin
一壶浊酒..7 小时前
Scrape Webpack练习
开发语言·javascript·webpack
命运之光8 小时前
【C语言完整代码】就诊信息管理系统
java·c语言·开发语言
命运之光8 小时前
【C语言完整代码】图书管理系统:图书馆场景下的增删改查实战
c语言·开发语言
猿长大人8 小时前
C# | Serilog 新手入门
开发语言·c#·.net·log
CHB9 小时前
uni-app x 蒸汽模式 性能测试基准报告 Benchmark【Android版】
android·ios·uni-app