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()
相关推荐
json{shen:"jing"}3 小时前
10_自定义事件组件交互
开发语言·前端·javascript
小北方城市网3 小时前
Spring Boot 接口开发实战:RESTful 规范、参数校验与全局异常处理
java·jvm·数据库·spring boot·后端·python·mysql
一位搞嵌入式的 genius3 小时前
深入理解 JavaScript 异步编程:从 Event Loop 到 Promise
开发语言·前端·javascript
一路向阳~负责的男人3 小时前
PyTorch / CUDA 是什么?它们的关系?
人工智能·pytorch·python
brevity_souls3 小时前
SQL Server 窗口函数简介
开发语言·javascript·数据库
aloha_7893 小时前
乐信面试准备
java·spring boot·python·面试·职场和发展·maven
火云洞红孩儿4 小时前
零基础:100个小案例玩转Python软件开发!第六节:英语教学软件
开发语言·python
2501_915909064 小时前
苹果iOS应用上架详细流程与注意事项解析
android·ios·小程序·https·uni-app·iphone·webview
2401_841495644 小时前
深度卷积生成对抗网络(DCGAN)
人工智能·python·深度学习·神经网络·机器学习·生成对抗网络·深度卷积生成对抗网络
忧郁的橙子.4 小时前
26期_01_Pyhton函数进阶
python