如何用Python获取进程生命周期?Windows下关闭超时Firefox进程
如何关闭运行时长超过30分钟的Firefox进程(Windows系统)
没问题!完全可以获取Windows进程的生命周期,我们只需要基于psutil库的现有能力做一点点修改,就能实现你的需求——只关闭运行超过30分钟的Firefox进程。
原代码的局限
你的现有代码会直接杀掉所有名为firefox.exe的进程,不管它刚启动还是已经运行了很久。我们需要加入运行时长判断,只对符合条件的进程执行关闭操作。
修改后的完整代码
import psutil import time PROCNAME = "firefox.exe" # 定义允许的最大运行时长:30分钟 = 1800秒 MAX_RUN_SECONDS = 30 * 60 # 遍历所有进程,提前指定需要获取的字段(提升效率) for proc in psutil.process_iter(['name', 'create_time']): try: # 检查进程名是否匹配 if proc.info['name'] == PROCNAME: # 计算进程已运行的时长(当前时间戳 - 进程创建时间戳) run_duration = time.time() - proc.info['create_time'] # 判断是否超过30分钟 if run_duration > MAX_RUN_SECONDS: print(f"正在关闭运行时长{int(run_duration/60)}分钟的Firefox进程(PID: {proc.pid})") # 强制关闭进程,若想温和关闭可改用proc.terminate() proc.kill() except (psutil.NoSuchProcess, psutil.AccessDenied): # 处理两种常见异常:进程已结束/无权限访问进程 continue
关键细节解释
- 获取进程创建时间:
proc.info['create_time']返回进程创建时的Unix时间戳(从1970年1月1日到创建时刻的秒数),用当前时间戳time.time()减去它,就能得到进程的运行时长(秒)。 - 提前指定字段:在
psutil.process_iter()中传入['name', 'create_time'],可以一次性获取我们需要的进程信息,避免后续重复调用API,提升脚本效率。 - 异常处理:遍历进程时,可能遇到进程已经被结束(
NoSuchProcess)或者没有权限访问系统级进程(AccessDenied)的情况,加上异常捕获能让脚本更稳定。
额外注意事项
- 确保已安装
psutil:如果还没装,打开命令提示符执行pip install psutil即可。 - 关闭方式选择:
proc.kill()是强制终止进程,类似任务管理器里的“结束进程”;如果想尝试温和关闭(让Firefox有机会保存会话),可以先用proc.terminate(),如果进程无响应再用proc.kill()。 - 权限问题:如果要关闭其他用户启动的Firefox进程,脚本需要以管理员权限运行。
内容的提问来源于stack exchange,提问作者kiroyuu
相关产品推荐
相关产品推荐

