psutil之cpu、memory、disk解析

psutil之cpu、memory、disk解析,第1张

psutil是一个Python写的方便获取系统硬件和性能信息的库。它实现了同等命令行工具提供的功能,如ps、top、lsof、netstat、ifconfig、who、df、kill、free、nice、ionice、iostat、iotop、uptime、pidof、tty、taskset、pmap等。

>>>import psutil

>>>psutilcpu_count() #逻辑CPU个数

>>>psutilcpu_count(logical=False) #物理CPU个数

>>>psutilcpu_percent() #cpu平均使用率

>>>psutilcpu_percent(3) #最近3秒钟cpu平均使用率

>>>psutilcpu_freq() #CPU频率

scpufreq(current=8040, min=00, max=21120)

>>>psutilcpu_stats() #CPU状态

scpustats(ctx_switches=1910389985, interrupts=2644388135, soft_interrupts=0, syscalls=3686421224)

>>>import psutil

>>>psutilvirtual_memory()

部分嵌入式系统:

svmem(total=16919429120, available=4207607808, percent=751, used=12711821312, free=4207607808)

linux系统:

svmem(total=135077658624,available=12628275200,percent=907,used=122103193600,free=10256912384,active=111388827648,inactive=6278348800,buffers=278413312,cached=2439139328,shared=184320)

解析

1)total:总物理内存,包括已使用的物理内存和没使用的物理内存

total = used + free

2)used:已使用的物理内存

3)free:没使用的物理内存

4)available:可用内存,其包括没使用的物理内存,缓冲(如存在),缓存(若存在)。

available = free + buffers + cached

注意available和free的区别

5)percent:内存使用率,(总物理内存大小 - 可用内存大小) / 总物理内存大小 100

percent = (total - available) / total 100

延伸

交换内存

>>>import psutil

>>>psutilswap_memory()

sswap(total=29810581504, used=26177650688, free=3632930816, percent=878, sin=0, sout=0)

>>>import psutil

>>>psutildisk_usage("C:") # C盘的使用率

sdiskusage(total=285441257472, used=103434944512, free=182006312960, percent=362)

>>>psutildisk_usage("/") # 根分区的使用率

sdiskusage(total=225328492544, used=77228355584, free=148100136960, percent=343)

>>>psutildisk_partitions() # 获取分区信息

[sdiskpart(device='C:\\', mountpoint='C:\\', fstype='NTFS', opts='rw,fixed', maxfile=255, maxpath=260), sdiskpart(device='D:\\', mountpoint='D:\\', fstype='NTFS', opts='rw,fixed', maxf

ile=255, maxpath=260)]

>>>psutildisk_io_counters() #  获取硬盘总的io和读写信息

sdiskio(read_count=3036624, write_count=7461516, read_bytes=111278890496, write_bytes=176975582208, read_time=1369, write_time=3012)

>>>psutildisk_io_counters(perdisk=True) # 获取单分区的io和读写信息

{'PhysicalDrive0': sdiskio(read_count=3046900, write_count=7464803, read_bytes=111679064576, write_bytes=177050010624, read_time=1372, write_time=3014)}

查看python内置函数的方法:1、打开PythonIDLE编辑器;2、输入"dir(__builtins__)"命令,按下回车键(Enter)得到Python全部内置变量和函数。

打开PythonIDLE,我用的是Python3。7,界面有个性定制。你的版本不同,界面有差异,但是 *** 作方法应该是一样的。输入dir(__builtins__)。

可以看到,返回的结果是以[开头以]结尾,说明是个列表,输入:len(dir(__builtins__))。

按下两次回车键(Enter)。按照默认的字母顺序,先是大写字母A-Z,然后是下划线(_)开头的,然后是小写字母a-z。

获取本机CPU温度、使用率、内存使用率、硬盘使用率等

在Python中获取系统信息的另一个好办法是使用psutil这个第三方模块。顾名思义,psutil = process and system utilities,它不仅可以通过一两行代码实现系统监控,还可以跨平台使用,支持Linux/UNIX/OSX/Windows等,是系统管理员和运维小伙伴不可或缺的必备模块。

你找一找这个库,rpyc。这个东西是目前RPC方面最好用的一个东西了。比我以前接触学习的分布式对象系统更好用。 其实python这个东西,因为是脚本,所以做分布式对象特别容易。主要是做好系列化与反系列化就可以了。

此外rpc-xml也是常用的一个方法。

如果你对需求理解深,通常不会选择分布式对象,而是自己定制数据结构,传输协议,序列化与反序列化。这样才能实现高效,可扩展性。

你在一个进程中创建一个对象,可以使用python自带的系列化模块pickle进行转换。然后传递到另一个进程中,再反序列化就可以实现。 *** 作完成后,再传递回来。这就是原理。

如果使用指定内存地址也是可以的。可以设计一个共享内存,然后通过numpy这个模块进行内存与对象的转换。其它的就不多说了。 当然你也可以自己设计序列化与反序列化模块。

通常复杂的对象效率低。整型固定长度数组是最快的。

Python的内存管理,一般从以下三个方面来说:

1)对象的引用计数机制(四增五减)

2)垃圾回收机制(手动自动,分代回收)

3)内存池机制(大m小p)

1)对象的引用计数机制

要保持追踪内存中的对象,Python使用了引用计数这一简单的技术。sysgetrefcount(a)可以查看a对象的引用计数,但是比正常计数大1,因为调用函数的时候传入a,这会让a的引用计数+1

2)垃圾回收机制

吃太多,总会变胖,Python也是这样。当Python中的对象越来越多,它们将占据越来越大的内存。不过你不用太担心Python的体形,它会在适当的时候“减肥”,启动垃圾回收(garbage

collection),将没用的对象清除

从基本原理上,当Python的某个对象的引用计数降为0时,说明没有任何引用指向该对象,该对象就成为要被回收的垃圾了

比如某个新建对象,它被分配给某个引用,对象的引用计数变为1。如果引用被删除,对象的引用计数为0,那么该对象就可以被垃圾回收。

然而,减肥是个昂贵而费力的事情。垃圾回收时,Python不能进行其它的任务。频繁的垃圾回收将大大降低Python的工作效率。如果内存中的对象不多,就没有必要总启动垃圾回收。

所以,Python只会在特定条件下,自动启动垃圾回收。当Python运行时,会记录其中分配对象(object

allocation)和取消分配对象(object deallocation)的次数。当两者的差值高于某个阈值时,垃圾回收才会启动。

我们可以通过gc模块的get_threshold()方法,查看该阈值。

3)内存池机制

Python中有分为大内存和小内存:(256K为界限分大小内存)

1、大内存使用malloc进行分配

2、小内存使用内存池进行分配

python中的内存管理机制都有两套实现,一套是针对小对象,就是大小小于256K时,pymalloc会在内存池中申请内存空间;当大于256K时,则会直接执行系统的malloc的行为来申请内存空间。

当Python作为系统服务时,可能无法获取系统变量。这是因为服务程序在启动时,并没有像一般程序一样把系统变量加载到内存里,所以Python也无法使用它们。如果要解决此问题,可以尝试在服务启动前显式地加载系统变量,然后才启动Python服务。

以上就是关于psutil之cpu、memory、disk解析全部的内容,包括:psutil之cpu、memory、disk解析、查看变量内存地址的python内置函数、python读取cpu温度和占用率等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9498065.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存