一篇文章带你解锁Python库中操作系统级别模块psutil

2020-12-21 15:42:36 浏览数 (1)

/前言/

psutil是一个强大的可以获取操作系统运行进程和CPU使用率的模块,主要可以用于系统监控分析,它也是可以跨平台使用的模块。这篇文章主要是介绍该模块的安装和基本用法,下面我们就来看看它到底有哪些使用功能吧。

/模块介绍/

1、安装。使用pip命令进行安装即可。

代码语言:javascript复制
pip install psutil
代码语言:javascript复制
2、基本用法

老样子,先使用dir看它有哪些方法,为了不看那些平时很少用到的方法,小编决定这样做:

3、可以看出,命令不是很多,这是因为过滤了一些带下划线的命令,不过已经够用了。里面有很多我们比较熟悉的方法。先试试几个看看跟我们想的结果是否一样。

可以看出第一个命令打印出来当前的用户名信息,第二个则是打印出了系统中所有的pid,也就是如下所示:

可以看到所有的进程号,那么获取这些进程号有什么用呢?答案是肯定的。我们可以凭借这些进程号获取到程序相关进程进而获取到程序的目录。

4、那么我们应该怎样通过进程号获取到进程呢?我们这里有一个process方法,知道进程的人都了解这是一个进程方法,所以我们选用这个来试试看。

我们先选择一个pid号试试看能不能捕捉到进程,我们选择684,如下图所示:

5、这样我们就获取到了这个进程,然后我们使用 方法:

代码语言:javascript复制
pp.name()

就可以获取到进程对应的程序名是哪一个了,后面还有时间。

6、那么我们现在是不是就可以把所有的进程名和进程列举出来了?请看下图:

是不是简单到超出你的想象?反之,我们也可以通过进程名来推敲出进程所在的所有pid号噢,请看下图:

7、通过对process方法的进一步延伸,发现它还有好多有趣的方法:

代码语言:javascript复制
pp.children(recursive=True)  返回这个进程的子元素作为一个进程的列表,如果递归是真的返回所有父的后代
pp.cmdline() 命令行
pp.connentions(kind='inet') 返回套接字连接打开的过程作为一个列表
pp.cpu_affinity(cpus=None)   获取或设置CPU关联过程
pp.cpu_percent(interval=None) 返回一个浮点数表示当前进程的CPU
pp.cpu_times()  返回一个(用户、系统、子用户 子系统)代表的过程
pp.create_time() 进程创建时间
pp.cwd()  进程的当前工作目录的绝对路径
pp.environ()  环境变量
pp.exe()   当前进程的可执行文件的一个绝对路径
pp.kill()  杀死当前进程
pp.username() 用户拥有流程的名称
pp.ppid() 返回进程父pid
pp.open_files() 进程打开的文件
pp.resume() 恢复所有进程线程的影响
pp.status()  进程当前状态
pp.num_threads() 进程的线程数量
pp.threads()  所有线程
pp.pid   进程pid
pp.terminal() 进程终端
pp.terminate() 进程结束

8、还有一些方法,大家可以一个个去发掘,用法挺简单的,在此就不一一例举了。

9、下面我们来看看psutil其他的带下划线的方法,如下图所示:

可以看到有很多cpu,disk,net开头的方法。

10、通过平时对英语的积累,相信大家应该能猜到这些方法的用处了,下面我们来看看:

可以看出第一个是CPU的内核数量,因为我的是4G内存,因此得出,第二个则是获取c盘容量使用情况。

11、psutil 中还有个非常牛逼的方法,它就是test,它可以模拟出像任务管理器一样的列表,如下图所示:

怎么样,是不是很牛了?哈哈哈,有了这些知识做积累相信你很快就能做一个软件出出来了。

12、在这里小编做了一个还算不错的小程序,就是打印出当前所有进程pid和进程名以及路径,效果如下图所示:

可以应该可以看出加了一个if语句,这是因为有的进程是系统进程,是没有权限是无法访问的。

13、更多的方法希望大家有空多看看文档,没有什么难的。重要的是你肯学就没有克服不了的障碍,希望可以帮助到大家。

/小结/

本文主要介绍了强大的可以获取操作系统运行进程和CPU使用率的模块psutil ,介绍了该模块的安装和基本使用方法,并带大家了解了一些简单的操作系统知识,希望对大家的学习有帮助。今天分享的内容就到这里了,感谢大家的支持~

想学习更多关于Python的知识,可以参考学习网址:http://pdcfighting.com/,点击阅读原文,可以直达噢~

------------------- End -------------------

0 人点赞