
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()