You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:23:28