首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用python获得精确的进程CPU和内存使用量?

如何使用python获得精确的进程CPU和内存使用量?
EN

Stack Overflow用户
提问于 2022-09-10 16:31:36
回答 3查看 769关注 0票数 16

我正在尝试创建一个进程监视器,但是我无法将我的结果与windows任务管理器进行比较得到准确的结果。

我一直在使用psutil,在查看整个cpu和内存使用情况时,它似乎工作得很好,但对于单个进程似乎不太准确。内存使用率总是高于任务管理器和CPU,它总是随机的。

我将进程设置为使用self.process = psutil.Process(self.pid)初始化一次,然后每秒钟调用以下方法一次,任务管理器中的进程以固定的5.4%的cpu使用率和130 at内存运行,但是下面的代码生成:

代码语言:javascript
运行
复制
CPU: 12.5375
Memory 156459008
CPU: 0.0
Memory 156459008
CPU: 0.0
Memory 156459008
CPU: 0.0
Memory 156459008
CPU: 12.5375
Memory 156459008
CPU: 0.0
Memory 156459008
CPU: 0.0
Memory 156459008

示例代码:

代码语言:javascript
运行
复制
def process_info(self):    
        # I am calling this method twice because I read the first time gets ignored?
        ignore_cpu = self.process.cpu_percent(interval=None) / psutil.cpu_count()
        time.sleep(0.1)
        process_cpu = self.process.cpu_percent(interval=None) / psutil.cpu_count()
        
        # I also tried the below code but it was much worse than above
        # for j in range(10):
        #     if j == 0:
        #         test_list = []
        #     p_cpu = self.process.cpu_percent(interval=0.1) / psutil.cpu_count()
        #     test_list.append(p_cpu)
        # process_cpu = (sum(test_list)) / len(test_list)

        # Memory is about 25mb higher than task manager
        process_memory = self.process.memory_info().rss

        print(f"CPU: {process_cpu}")
        print(f"Memory: {process_memory}")

我是不正确地使用psutil,还是有更准确的方法来获取数据?

EN

Stack Overflow用户

发布于 2022-09-16 22:11:39

就像他在评论中提到的@Axeltherabbit一样,任务管理器以给定的名称获取所有进程,而psutils则获取单独的进程。psutils是正确的,任务管理器超过作用域并决定抓取所有进程.

票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73673458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档