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 logger


def exec_cmd(cmd):
    """执行命令与结果"""
    r = os.popen(cmd)
    text = r.read()
    r.close()
    return text

cmd = "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 logger


def exec_cmd(cmd):
    """执行命令与结果"""
    r = os.popen(cmd)
    text = r.read()
    r.close()
    return text

def 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.mfbz.cn/a/576476.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot+MyBatis-Plus+jsqlparser实现多租户功能

前言 多租户技术(multi-tenancy technology)是一种软件架构技术,它允许在单个系统实例上为多个用户或组织提供服务,同时确保这些用户之间数据的隔离性。在多租户架构中,每个租户(可以是个人用户、企业、组…

python中开发页面的两种方法:Qt Designer(PyQt图形化界面拖拽开发App界面)以及Django(开发Web应用框架)

一、开发独立的窗口,App的那种,可使用tkinter或者PyQt 使用PyQt时,里面有个工具Qt Designer,是一个可视化的界面设计工具,可以通过拖拽等方式来设计界面。下面就是Qt Designer的操作界面: 参考链接如下&am…

代码随想录-算法训练营day24【回溯01:理论基础、组合】

代码随想录-035期-算法训练营【博客笔记汇总表】-CSDN博客 第七章 回溯算法part01 今日内容:● 理论基础 ● 77. 组合 详细布置 理论基础 其实在讲解二叉树的时候,就给大家介绍过回溯,这次正式开启回溯算法,大家可以先看视频&a…

docker入门级命令

基本概念 docker的连个基本概念:镜像、容器。 docker镜像可以理解为是存储docker安装包的地方,比如:mcr.microsoft.com/mssql/server:2017-latest是sqlserver的docker镜像。 可以通过docker pull命令拉取远程镜像到本地。比如:…

【论文浅尝】Phi-3-mini:A Highly Capable Language Model Locally on Your Phone

Phi-3-mini phi-3-mini,一个3.8亿个参数的语言模型,训练了3.3万亿个token,其总体性能,通过学术基准和内部测试进行衡量,可以与Mixtral 8x7B和GPT-3.5等模型相媲美(在MMLU上达到69%,在MT-bench上达到8.38)&…

什么是云手机?云手机有什么用?

过去,我们手中的手机是我们生活、工作、娱乐的得力助手,但随着时代的变迁和技术的发展,我们需要的不仅仅是一部手机,而是一个更强大、更灵活的工具。在这个时候,云手机横空出世,成为了我们手机使用的新选择…

[GXYCTF 2019]BabyUpload

过滤 <? 且后缀不能有 php 上传1.jpg文件&#xff0c;内容为&#xff1a; <script languagephp>eval($_POST[cmd]);</script> 但文件后缀为.jpg&#xff0c;蚁剑不能连接。那怎么办呢&#xff1f; .htaccess文件&#xff1a;解析.jpg文件中的php代码 &#xf…

Druid高性能数据库连接池?SpringBoot整合MyBatis整合SpringMVC整合Druid

文章目录 Druid高性能数据库连接池&#xff1f;SpringBoot整合MyBatis整合SpringMVC整合Druid异常记录spring-boot-starter-parent作用Druid介绍什么是数据库连接池&#xff1f;为什么选择Druid数据库连接池整合SpringBoot,MyBatis,SpringMVC,Druid到Maven项目的真个流程pom文件…

Redis入门到实战教程(基础篇)笔记

教学来源&#xff1a; Redis课程介绍导学_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1cr4y1671t?p1一、Redis 入门 1.认识NoSQL 2.Redis在虚拟机中的安装和开机自启 Redis在虚拟机中安装和配置开机自启-CSDN博客https://blog.csdn.net/qq_69183322/article/deta…

MT8788智能模块简介_MTK联发科安卓核心板方案厂商

MT8788安卓核心板是一款具备超高性能和低功耗的4G全网通安卓智能模块。该模块采用联发科AIOT芯片平台&#xff0c;供货周期长。 MT8788核心板搭载了12nm制程的四个Cortex-A73处理器核心和四个Cortex-A53处理器核心&#xff0c;最高主频可达2.0GHz。板载内存容量可选为4GB64GB(也…

docker 基本命令

目录 一、docker 镜像操作命令 1.1.查询软件镜像 1.2.docker pull&#xff1a;下载镜像 1.3.docker push&#xff1a;上传镜像 1.4.docker images&#xff1a;查看本地镜像 1.5.docker inspect &#xff1a;获取镜像详细信息 1.6.docker tag&#xff1a;添加镜像标签 …

4.28|重量级嘉宾携卓翼飞思RflySim平台亮相国际盛会,内容抢先看!

一. 大会背景 2024国际无人机应用及防控大会暨无人机产业博览会即将拉开帷幕&#xff0c;一场高规格、高水平的无人机产业应用国际盛会将再次点亮科技界的星空。 该大会由中国无人机产业创新联盟联合各方有影响力的单位&#xff0c;于4月27-29日在北京举办。组委会致力于将会…

【Python系列】受保护属性

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

RAG原理及本地化实践

基于LLM的应用在问题回答、信息获取上发挥出了巨大作用。这些通用大模型训练的数据主要来源于互联网上的会话或者个别机构提供的数据&#xff0c;虽然能够提供类似人的交互对答&#xff0c;但是在针对某个特定领域的时候就显得不足。通用大模型在应用中主要有以下问题&#xff…

【DINO】环境配置

1. DINO简介 作为一款基于Transformer性能强劲的计算机视觉算法&#xff0c;一经发布即受追捧&#xff0c;本文记录下在DINO官方代码在集群上的环境配置及训练自己的数据集过程。 DINO原文&#xff1a;https://arxiv.org/abs/2203.03605 DINO源代码&#xff1a;https://github.…

ssm084基于ssm的大型商场会员管理系统+jsp

大型商场会员管理系统的设计与实现 摘 要 进入信息时代以来&#xff0c;很多数据都需要配套软件协助处理&#xff0c;这样可以解决传统方式带来的管理困扰。比如耗时长&#xff0c;成本高&#xff0c;维护数据困难&#xff0c;数据易丢失等缺点。本次使用数据库工具MySQL和编…

【C语言必刷题】7. 百钱百鸡

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 |《Web世界探险家》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更…

《汇编语言》- 读书笔记 - 综合研究

《汇编语言》- 读书笔记 - 综合研究 研究试验 1 搭建一个精简的 C 语言开发环境1. 下载2. 配置3. 编译4. 连接 研究试验 2 使用寄存器1. 编一个程序 ur1.c &#xff08; tcc 用法&#xff09;tcc 编译连接多个源文件tlink 手动连接 2.用 Debug 加载 ur1.exe&#xff0c;用u命令…

数据转换 | Matlab基于RP递归图一维数据转二维图像方法

目录 效果分析基本介绍程序设计参考资料获取方式 效果分析 基本介绍 Matlab基于RP递归图一维数据转二维图像方法 基于RP&#xff08;Recurrence Plot&#xff09;递归图的方法可以将一维数据转换为二维图像&#xff0c;以可视化数据的动态特征。RP递归图是一种表示时间序列相…

android 去除桌面谷歌搜索框

注&#xff1a; 本文只是博主学习记录分享&#xff0c;仅供参考。如有错误请指出来&#xff0c;谢谢&#xff01; 一、问题描述 去除 android 系统桌面谷歌搜索栏&#xff0c;前后对比如下图&#xff1a; 系统版本&#xff1a;android12 平台&#xff1a;rk3568 二、…