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()
相关推荐
事圆则缓21 分钟前
Java 8 Lambda、Stream、Optional 与 Android 边界:从回调语法到运行时兼容
android·java
嵌入式学习菌21 分钟前
Workbuddy自动写一个RS485 / LoRa 参数调试工具
python
mmsx34 分钟前
Android 地图十万要素不卡顿:空间网格 + 渐进式加载的移动端实践
android·大数据·opengl
钱栈up1 小时前
番茄小说榜单爬虫失效排查:从页面路由变更到API参数映射的全流程复盘
python
唐璜Taro1 小时前
Agent Harness 系列 · 第 1 篇|Agent 不只是换一个更强的模型
人工智能·python
码行山野赴时序归途2 小时前
链表家族收官篇:循环链表
c语言·开发语言·数据结构·链表
泡茶喝茶写代码2 小时前
量化数据进阶:多维实战篇(第 11 篇):历史涨跌停价:涨跌停序列与止损线测算
java·python·股票数据api·股票数据·股票数据api接口·股票api数据接口·股票量化数据api
景熙55232 小时前
单体项目编写思路和落地形式
java·开发语言
Godikov2 小时前
Android 工业终端保活实战:前台服务 + 开机自启 + 更新自启的三重保障
android
字节暗面2 小时前
SO加固强度怎么量化?腾讯ACE与FairGuard静态分析实测
android·逆向