Windows自动化重启python脚本

博主遇到一个需求:每天都需要定时重启一个python脚本,这个脚本是跑在windows电脑上的,下面是博主的解决方法:

  1. 获取已经启动的应用的ID
  2. kill这个应用ID
  3. 再次根据指定的Python环境运行这个脚本

文章目录

  • 解决步骤
    • 1. 获取已经启动的应用ID
    • 2. 根据应用ID,结束这个应用程序
    • 3. 再次根据指定的Python环境运行这个脚本
  • 完整示例

解决步骤

1. 获取已经启动的应用ID

博主的程序会监听到5001端口,因此根据这个特性,运行如下代码获取启动的应用ID:

import os
import subprocess
import time
from loguru import loggerdef exec_cmd(cmd):"""执行命令与结果"""r = os.popen(cmd)text = r.read()r.close()return textcmd = "netstat -aon|findstr 5001"
result = exec_cmd(cmd).strip()

得到如下结果:

TCP    0.0.0.0:5001           0.0.0.0:0              LISTENING       2404

可以看到,有一个TCP链接在监听5001端口,其中最后一个2404就是这个应用的ID

2. 根据应用ID,结束这个应用程序

_port = result.strip().split(' ')[-1]
exec_cmd(f"taskkill /T /F /PID {_port}")  # 成功关闭

3. 再次根据指定的Python环境运行这个脚本

subprocess.Popen(r"C:\Users\User4\Anaconda3\envs\my_env\python.exe main_run.py",cwd=r"C:\Users\User4\Desktop\my_python_bin")
logger.success("重启预测模型,延迟20s....")

这里用到了subprocess.Popen(),其中涉及到了2个目录和1个文件:

  • 第一行C:\Users\User4\Anaconda3\envs\my_env\python.exe:这个是启动python的解释器完整路径(最好是完整路径)
  • 第一行main_run.py:这个是需要重启的python脚本文件
  • 第二行C:\Users\User4\Desktop\my_python_bin:这个是脚本所在的目录

以上程序可以理解为:

  • 解释器:C:\Users\User4\Anaconda3\envs\my_env\python.exe
  • 脚本目录:C:\Users\User4\Desktop\my_python_bin\main_run.py

完整示例

import os
import subprocess
import time
from loguru import loggerdef exec_cmd(cmd):"""执行命令与结果"""r = os.popen(cmd)text = r.read()r.close()return textdef restart_my_python():cmd = "netstat -aon|findstr 5001"result = exec_cmd(cmd).strip()if result != "":time.sleep(0.5)_port = result.strip().split(' ')[-1]exec_cmd(f"taskkill /T /F /PID {_port}")  # 成功关闭subprocess.Popen(r"C:\Users\User4\Anaconda3\envs\my_env\python.exe main_run.py",cwd=r"C:\Users\User4\Desktop\my_python_bin")logger.success("重启脚本,延迟5s....")time.sleep(5)restart_my_python()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/4913.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uni-app - 使用地图功能打包安卓apk的完美流程以及重要的注意事项(带您一次打包成功)

在移动应用开发中,地图功能是一个非常常见且实用的功能,可以帮助用户快速定位并浏览周边信息。而在uni-app开发中,使用地图功能也是一项必备技能。本文将介绍uni-app使用地图功能打包安卓apk的注意事项,帮助开发者顺利完成地图功能…

掼蛋跟牌技巧

掼蛋跟牌是指其他玩家领出牌,自己跟着出牌,在跟牌的时候,分为强牌和弱牌两种情况,一般强牌以顺牌为主,弱牌以顶牌为主。 一、上家领出牌 在游戏前期,上家领出牌的时候,应该尽量跟牌,…

Pulsar 2

文章目录 一、Pulsar高级组件基本使用1、Funcation(轻量级计算流程)概念与使用Function背景介绍什么是Functions如何使用 2、Pulsar Connector 连接器Pulsar Connector 连接器 ----> Pulsar Flink Connector 3、Transactions事务支持相关的操作Pulsar如何实现Exactly-OncePu…

2024年的Java版本选择?java 17 安装

文章目录 2024年的Java版本选择?java 1.8 和 java17 什么区别?java 17 安装windows 11安装java 17C:\Program Files\Common Files\Oracle\Java\javapath是什么 2024年的Java版本选择? 3年前,java 1.8是市场主流(还有一…

BUU_RE

findit String m String.valueOf(x) valueOf()将不同类型数据转换为字符串 m.equals(edit.getText().toString()) edit.getText()通常用于从用户界面中获取文本输入,toString()方法将其转换为字符串,然后使用equals()方法进行比较 我改成了c代码&a…

乐观锁悲观锁

视频:什么是乐观锁?什么是悲观锁?_哔哩哔哩_bilibili

大象机器人开源六轴协作机械臂myCobot 320 手机摄影技术!

引言 有没有遇到过这样的情况:当你手持手机或相机准备拍摄视频时,心中已经构想了完美的画面,但却因为实际的限制无法捕捉到理想中的角度?这种情况可能会让人感到挫折。例如,如果想要从地面一只蚂蚁的视角拍摄&#xff…

【数据结构7-1-查找-线性-二分法-二叉树-哈希表】

目录 1 查找基本概念2 线性表的查找2.1 顺序查找2.2 二分法查找2.3 分块查找 3 树表的查询3.1 二叉排序树3.1.1 定义3.1.2 二叉树的建立、遍历、查找、增加、删除:3.1.3 代码实现: 3.2 平衡二叉树3.2.1 平横因子3.2.2 不平横树的调整-左旋3.2.3 不平横树…

Python实现的人脸识别系统

一、引言 人脸识别技术作为计算机视觉领域的重要应用之一,近年来得到了广泛的研究和应用。在Python环境下,我们可以利用开源库和算法来实现一个人脸识别系统。本文将介绍如何使用Python及相关库来实现一个简单的人脸识别系统,包括人脸检测、特征提取和匹配识别等关键步骤。…

[系统安全] 六十.威胁狩猎 (1)APT攻击检测及防御与常见APT组织的攻击案例分析

您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列。因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全、逆向分析和恶意代码检测,“系统安全”系列文章会更加聚焦,更加系…

大语言模型在专业领域的应用——医疗场景下的大语言模型

大语言模型在专业领域的应用——医疗场景下的大语言模型 构建面向医疗的大语言模型数据资源总结医疗是与人类生活密切相关的重要领域之一。由于具有较强的通用任务解决能力,大语言模型被广泛用于辅助医生处理各种相关医疗任务,例如医疗诊断、临床报告生成、医学语言翻译、心理…

AI大模型-使用 FastChat 部署ChatGLM3

文章目录 FastChat介绍支持的模型安装环境命令行方式加载本地模型web服务方式运行本地模型启动 the controller启动 model worker(s)启动 Gradio web serverAPI-Based的模型支持新模型的支持参考资料FastChat介绍 FastChat是一个用于培训、服务和评估基于大型语言模型的聊天机…

[极客大挑战 2019]Upload、[ACTF2020 新生赛]Upload、[MRCTF2020]你传你呢

[极客大挑战 2019]Upload 打开环境&#xff0c;是上传一句话木马的题 先上传1.php试试&#xff0c;发现不可以 试试改后缀为phtml&#xff0c;提示语句中不能包含<?&#xff0c;只能改木马&#xff1a; <script language"php">eval($_POST[line]);</sc…

etcd集群安装和单机安装

etcd集群安装和单机安装 etcd介绍 etcd 是基于 Raft 的分布式 key-value 存储系统&#xff0c;由 CoreOS 开发&#xff0c;常用于服务发现、共享配置以及并发控制&#xff08;如 leader 选举、分布式锁等&#xff09;。kubernetes 使用 etcd 存储所有运行数据。etcd基于Go语言…

Stm32cubeide 在指定文件夹中生成以时间命名的文件_时间命名的bin文件

其实就是在生成文件后 使用命令将文件转换改名并保存在指定文件下 命令如下 在项目目录下Bin_file文件夹中生成以 项目名称+时间为文件名的bin文件 arm-none-eabi-objcopy ${ProjDirPath}/Debug/*.elf -O binary P r o j D i r P a t h / B i n f i l e / {ProjDirPath}/Bi…

实现多线程并发服务器和多进程并发服务器(Linux网络编程)

多进程并发服务器 实现流程 1. Socket(); 创建 监听套接字 lfd2. Bind() 绑定地址结构 Strcut scokaddr_in addr;3. Listen(); 4. while (1) {cfd Accpet(); 接收客户端连接请求。pid fork();if (pid 0){ 子进程 read(cfd) --- 小写->大写 --write(cfd) close(lf…

pytest测试之conftest详解

一、概述   Conftest是一个Python测试框架&#xff0c;它是pytest的一个组件&#xff0c;用于配置测试环境和参数。通过Conftest&#xff0c;我们可以创建一个可复用的测试配置文件&#xff0c;以便在多个测试模块之间共享配置信息。Conftest非常适合用于管理大型项目中的测试…

scrollintoview方法滚动距离顶部距离

scrollIntoView 方法是 DOM API 的一部分&#xff0c;用于将元素滚动到视图中。这个方法接收一个布尔值参数 alignToTop&#xff0c;指示是否需要滚动到视图的顶部。 以下是如何使用 scrollIntoView 方法的示例代码&#xff1a; // 获取需要滚动的元素 const element docume…

机器学习-11-卷积神经网络-基于paddle实现神经网络

文章目录 总结参考本门课程的目标机器学习定义第一步&#xff1a;数据准备第二步&#xff1a;定义网络第三步&#xff1a;训练网络第四步&#xff1a;测试训练好的网络 总结 本系列是机器学习课程的系列课程&#xff0c;主要介绍基于paddle实现神经网络。 参考 MNIST 训练_副…

编译Qt6.5.3LTS版本(Mac/Windows)的mysql驱动(附带编译后的全部文件)

文章目录 0 背景1 编译过程2 福利参考 0 背景 因为项目要用到对MYSQL数据库操作&#xff0c;所以需要连接到MYSQL数据库。但是连接需要MYSQL驱动&#xff0c;但是Qt本身不自带MYSQL驱动&#xff0c;需要自行编译。网上有很多qt之前版本的mysql驱动&#xff0c;但是没有找到qt6…