当前位置: 首页 > news >正文

【Python】命令行工具实现监控ctrl+c与运行时长终止任务

按下 Ctrl+C 时优雅地停止任务,你可以使用 Python 的 signal 模块捕获 SIGINT 信号(即 Ctrl+C 发送的中断信号),并在捕获时执行清理操作或退出程序。

import argparse
import signal
import sys
import time# 全局标志,用于控制主循环是否继续运行
running = Truedef signal_handler(sig, frame):global runningprint("\n[INFO] Ctrl+C pressed. Stopping gracefully...")running = Falsedef main():global running# 设置信号捕获signal.signal(signal.SIGINT, signal_handler)# 解析命令行参数parser = argparse.ArgumentParser()parser.add_argument('-a', '--age', type=int, default=1, help='age.')parser.add_argument('-d', '--duration', type=int, default=None, help='Duration to run.')parser.add_argument('-n', '--name', type=str, default='mdwsw')args = parser.parse_args()print(f"[INFO] Starting task with name: {args.name}")if args.duration:print(f"[INFO] Will run for {args.duration} seconds unless interrupted.")start_time = time.time()try:while running:# 模拟任务执行print("Running task...")time.sleep(1)# 如果设置了运行时间,检查是否超时if args.duration and (time.time() - start_time) >= args.duration:print("[INFO] Duration reached. Exiting.")breakexcept Exception as e:print(f"[ERROR] Exception occurred: {e}")finally:print("[INFO] Cleaning up resources...")if __name__ == "__main__":main()
http://www.dtcms.com/a/318082.html

相关文章:

  • 2024学年云南省职业院校技能大赛 “信息安全管理与评估”赛项 比赛样题任务书
  • FreeRTOS临界资源保护方法
  • 商派小程序商城(小程序/官网/APP···)的范式跃迁与增长再想象
  • android NDK 报错日志解读和还原报错方法名
  • Mybatis的高级特性
  • 【自动化运维神器Ansible】playbook核心组件之tags深度解析
  • 第一性原理科学计算服务器如何选择配置-CPU选择篇
  • thinkpad E14重装win 10系统
  • 云端软件工程智能代理:任务委托与自动化实践全解
  • Spring Boot Actuator 监控功能的简介及禁用
  • Java面试题036:一文深入了解VUE(1)
  • 批量提问程序开发方案:基于Python的百度文小言接口实现
  • 学习嵌入式之硬件——ARM体系
  • vue margin与padding对比
  • 用户体验设计中微投入设计:用户不知不觉付出的 3 种方式
  • 【24】C++实战篇——【 C++ 外部变量】 C++多个文件共用一个枚举变量,外部变量 extern,枚举外部变量 enum
  • Kaggle 经典竞赛泰坦尼克号:超级无敌爆炸详细基础逐行讲解Pytorch实现代码,看完保证你也会!!!
  • 直播间自动发言工具的开发
  • OpenAI/gpt-oss开源模型部署与使用全指南
  • 三维偏序 -- cdq 套 cdq
  • 蓝桥杯----锁存器、LED、蜂鸣器、继电器、Motor
  • 【YOLOv8改进 - C2f融合】C2f融合EBlock(Encoder Block):低光增强编码器块,利用傅里叶信息增强图像的低光条件
  • 分类数据集 - 水稻叶病虫害分类数据集下载
  • Java面试宝典:Java内存模型与对象可达性判定原理
  • Python爬虫实战:研究spiderfoot工具,构建网络情报收集系统
  • java 之 继承
  • jdk动态代理如何实现
  • 【补题】Codeforces Round 779 (Div. 2) C. Shinju and the Lost Permutation
  • 【补题】CodeTON Round 1 (Div. 1 + Div. 2, Rated, Prizes!) D. K-good
  • 大数据之HBase