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

psutil获取进程create_time异常及运行时长计算问题咨询

使用psutil获取应用最长运行时长的常见问题解析

问题背景

用户使用以下Python代码尝试统计各应用的最长运行时长:

import psutil
import time

def main():
    process_dict = {}
    psutil.process_iter.cache_clear()
    processes = psutil.process_iter()

    for process in processes:
        duration = time.time() - process.create_time()
        if process.name() not in process_dict.keys(): # 记录每个应用的最长运行时长
            process_dict[process.name()] = duration
        elif process.name() in process_dict.keys() and duration > process_dict[process.name()]:
            process_dict[process.name()] = duration
        print(f'{process.name()} : {process.create_time()}')

运行后得到的部分输出如下:

System Idle Process : 0.0
System : 0.0
 : 1722366605.6514304
Registry : 1722366605.7470324
WidgetService.exe : 1722646907.9835372
MoUsoCoreWorker.exe : 1722366742.625491
smss.exe : 1722366607.7051022
csrss.exe : 1722366616.5462563
svchost.exe : 1722366619.7795236
...

用户提出三个核心疑问:

  1. 为何System Idle Process和System的create_time()返回0.0?这意味着它们已运行54年,显然不符合实际。
  2. 第三个进程名称为空字符串,这个无名进程是什么?
  3. 部分进程计算出的时长(如82小时)远超实际(每日关机,进程时长应小于24小时),原因是什么?

问题解答

1. System Idle Process和System的create_time()返回0.0的原因

这两个是Windows系统最底层的核心进程,它们的创建时间被系统硬编码为Unix纪元起始点(1970年1月1日,对应时间戳0.0)。因为它们是系统启动时第一个被初始化的进程,Windows内核并未为它们记录真实的创建时间戳,而是用0作为占位符。要获取它们的实际运行时长,应该以系统启动时间为基准,而非直接使用time.time() - create_time()计算。

2. 空名称进程的本质

这种无名进程通常是以下两种情况之一:

  • 系统内核级临时进程/线程:比如刚启动还未完成名称初始化的进程,或者即将退出的短命进程;
  • 权限限制:当前运行Python程序的用户没有足够权限读取该进程的名称信息,比如某些受系统保护的内核进程。
    你可以通过打印该进程的pid,在任务管理器中查看对应PID的进程详情,基本都是系统级的临时进程,无需过度关注。

3. 进程时长远超实际运行时间的原因

主要有三个常见因素:

  • PID复用:Windows会回收已退出进程的PID,新启动的进程可能会复用旧PID,此时create_time()会保留旧进程的时间戳,导致计算出的时长错误;
  • 快速启动(Fast Startup):如果开启了Windows快速启动功能,系统关机时会将内核状态保存到硬盘,下次开机直接恢复,部分系统进程的create_time()会保留上次开机时的时间戳,导致时长计算远超实际开机时间;
  • 服务托管进程:比如svchost.exe会托管多个系统服务,当某个服务重启时,svchost进程本身不会退出,而是重新加载服务模块,此时create_time()记录的是svchost进程的启动时间,而非单个服务的实际运行时间。

内容的提问来源于stack exchange,提问作者Anthony

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 04:00:18