python进程超时退出

执行的是后台shell命令操作,这里有一个超时退出操作

import time
import subprocess
import sys

# 超时异常类
class TimeOutError(Exception):
    def __init__(self, *args, **kwargs):
        self.message = "The Command timeout."
        pass

# 超时控制
def executeCMD(cmd, timeout=60):
    """执行命令cmd,返回命令输出的内容。
    如果超时将会抛出TimeoutError异常。
    cmd - 要执行的命令
    timeout - 最长等待时间,单位:秒
"""
    print("time start.command timeout =", str(timeout))
    p = subprocess.Popen(cmd, stderr=subprocess.STDOUT, shell=True)
    t_beginning = time.time()
    while True:
        if p.poll() is not None:
            if p.returncode != 0:
                print(p.returncode)
                sys.exit(9)
            break
        seconds_passed = time.time() - t_beginning
        if timeout and seconds_passed > timeout:
            p.kill()
            print("timeout.command will be kill. 任务已超时,已经被kill...")
            raise TimeOutError(cmd, timeout)
        time.sleep(1)

cmd = 'python3 /tmp/timeout_kill/a.py'
executeCMD(cmd)

如果完善其他程序,可以在这个基础上进行封装

天下难事,必作于易;天下大事,必作于细

Original: https://www.cnblogs.com/zhangweimee/p/16194670.html
Author: 醉城、
Title: python进程超时退出

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/10867/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

免费咨询
免费咨询
扫码关注
扫码关注
联系站长

站长Johngo!

大数据和算法重度研究者!

持续产出大数据、算法、LeetCode干货,以及业界好资源!

2022012703491714

微信来撩,免费咨询:xiaozhu_tec

分享本页
返回顶部
最近整理资源【免费获取】:   👉 程序员最新必读书单  | 👏 互联网各方向面试题下载 | ✌️计算机核心资源汇总