【Python】命令行工具实现监控ctrl+c与运行时长终止任务
·
按下 Ctrl+C 时优雅地停止任务,你可以使用 Python 的 signal 模块捕获 SIGINT 信号(即 Ctrl+C 发送的中断信号),并在捕获时执行清理操作或退出程序。
import argparse
import signal
import sys
import time
# 全局标志,用于控制主循环是否继续运行
running = True
def signal_handler(sig, frame):
global running
print("\n[INFO] Ctrl+C pressed. Stopping gracefully...")
running = False
def 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.")
break
except Exception as e:
print(f"[ERROR] Exception occurred: {e}")
finally:
print("[INFO] Cleaning up resources...")
if __name__ == "__main__":
main()
更多推荐


所有评论(0)