如何定时自启动与自关闭一些python脚本

 更新时间:2025年05月20日 08:52:49   作者:you_get_me_there  
这篇文章主要介绍了如何定时自启动与自关闭一些python脚本问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

定时自启动与自关闭一些python脚本

是windows系统,要是linux就好了。

思路是这样的

首先到早上6点整启动脚本或某个软件,然后记录下对应的pid,等到了晚上18点整的时候,自动根据pid再杀死对应进程。

定时开启与关闭用apscheduler,示例代码如下:

from apscheduler.schedulers.blocking  import BlockingScheduler 

def start_scripts():
	pass
	
def kill_processes():
	pass
	
if __name__ == "__main__":
    
	scheduler = BlockingScheduler()
	# 添加定时任务(crontab格式)
	scheduler.add_job(start_scripts, 'cron', hour=6, minute=0   # 启动 
	scheduler.add_job(kill_processes, 'cron', hour=18, minute=0  # 终止 
	print("监控程序已启动")
	try:
		scheduler.start() 
	except (KeyboardInterrupt, SystemExit):
		pass 
    

为了保证启动程序的时候获取到对应的真实pid,使用subprocess依赖库

import subprocess 


try:
	subprocess.Popen(
		["python", script], 
		cwd="d:/file/script/start.py",
		creationflags=subprocess.CREATE_NEW_CONSOLE)
except Exception as e:
	print(f"启动失败:{str(e)}")
	
try:
	proc = subprocess.Popen(
		["d:/file/soft/server.exe"], 
		cwd="d:/file/soft/")
	pid = str(proc.pid)
	with open("pid.txt", 'a') as f:         
        f.write(f"server.exe-pid={pid}\n")
except Exception as e:
	print(f"启动失败:{str(e)}")

	

启动脚本窗口的没有在这里获取pid,是因为一旦开启新窗口后,通过proc.pid获取的无效,AI说是:

  • 在Windows 7及更早版本中,创建新控制台时会生成conhost.exe 宿主进程
  • 返回的PID指向的是控制台宿主进程,而非实际目标进程
  • 新架构差异:Windows 8+ 采用了conhost与终端分离的新架构,而Win7使用传统模式

总之为了避免这个情况

我在被启动的python脚本里面读取pid,使用的psutil库,如下:

import psutil 

current_process = psutil.Process()
pid = str(current_process.pid)
print(f"当前进程ID: {pid}")
with open("pid.txt", 'a') as f:         
    f.write(f"script-1-pid={pid}\n") 

这样就可以避免返回的pid异常问题了. 后期等到晚上18点的时候读取pid文件,按顺序kill即可。

当然如果希望每隔一段时间执行一次,可以这样:

def print_fun():
	print("执行时间:", time.asctime())

scheduler.add_job(print_fun, 'interval', seconds=10)

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python中不同目录结构下的模块导入的实现示例

    Python中不同目录结构下的模块导入的实现示例

    模块导入是一个常见的操作,本文主要介绍了Python中不同目录结构下的导入的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2025-04-04
  • python如何查找图片按钮的坐标位置

    python如何查找图片按钮的坐标位置

    这篇文章主要介绍了python如何查找图片按钮的坐标位置,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • 如何使用Python程序完成描述性统计分析需求

    如何使用Python程序完成描述性统计分析需求

    这篇文章主要介绍了如何使用Python程序完成描述性统计分析需求,运用制表和分类,图形以及计算概括性数据来描述数据特征的各项活动,需要的朋友可以参考下
    2023-03-03
  • Python中的程序流程控制语句

    Python中的程序流程控制语句

    这篇文章主要介绍了Python中的程序流程控制语句,本篇博客将会讲述一下Python语言中的流程控制语句,在高中我们数学中学过程序流程题,下面我们来看看python中得流程语句会是怎么样呢,需要的小伙伴可以参考一下
    2022-02-02
  • Flask与SMTP协议邮件扩展问题

    Flask与SMTP协议邮件扩展问题

    这篇文章主要介绍了Flask与SMTP协议邮件扩展问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • python自动化unittest yaml使用过程解析

    python自动化unittest yaml使用过程解析

    这篇文章主要介绍了python自动化unittest yaml使用过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • Python中Excel打印设置(打印区域、缩放、页边距、页眉页脚)全攻略

    Python中Excel打印设置(打印区域、缩放、页边距、页眉页脚)全攻略

    在生成 Excel 报表时,打印设置直接决定工作表在打印或导出 PDF 时的显示效果,本文将详细介绍如何使用 Python 调整 Excel 打印设置,有需要的可以了解下
    2025-12-12
  • Python高级排序sort()函数使用技巧实例探索

    Python高级排序sort()函数使用技巧实例探索

    本文详细介绍sort()函数的使用,包括基本排序、自定义排序、逆序排序等多种情况,并提供大量示例代码,以帮助你充分理解和掌握这一函数的用法,探索更多sort()排序函数的作用
    2024-01-01
  • PyTorch学习:动态图和静态图的例子

    PyTorch学习:动态图和静态图的例子

    今天小编就为大家分享一篇PyTorch学习:动态图和静态图的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • Python OpenCV 图像矫正的原理实现

    Python OpenCV 图像矫正的原理实现

    这篇文章主要介绍了Python OpenCV 图像矫正的原理实现,检测边缘点;以边缘点作为输入,采用Hough直线检测,检测出最多点共线的四条直线,更多相关内容需要的朋友可以参考一下
    2022-07-07

最新评论