python3获取系统当前进程和进程名的方法

每个程序都是一个进程或者多个进程,除去系统占用资源其他都被这些进程占用,比如我们的web服务,数据库等;很多情况下因为程序自身问题,会导致CPU运行100%,内存耗尽,磁盘写满,最后导致服务崩溃,我们可以通过psutil下面2个方法获取进程相关信息,还是使用之前学习过的psutil模块,之前的笔记可以通过https://sulao.cn/post/4.html查看,下面我们来看今天要学习的主要方法

方法说明
psutil.pids()获取进程ID(每个进程都有唯一ID)
psutil.Process(pid)根据进程ID获取进程Process对象

我们直接来看下列子

#!/usr/bin/python
#coding: utf-8
import psutil
import os
import signal

pid = psutil.pids()
p = psutil.Process(pid[1])
print("*"*50)
print("进程名称:", p.name())
print("进程状态:", p.status())
print("创建时间:", p.create_time())
print("CPU时间:", p.cpu_times())
print("内存信息:", p.memory_percent())
print("内存使用:", p.memory_info())
print("IO信息:", p.io_counters())
print("线程数:", p.num_threads())

打印结果

**************************************************
进程名称: System
进程状态: running
创建时间: 1569289205.0
CPU时间: pcputimes(user=0.0, system=491.296875, children_user=0.0, children_system=0.0)
内存信息: 0.039387924162615856
内存使用: pmem(rss=6709248, vms=212992, num_page_faults=32872, peak_wset=11702272, wset=6709248, peak_paged_pool=0, paged_pool=0, peak_nonpaged_pool=272, nonpaged_pool=272, pagefile=212992, peak_pagefile=266240, private=212992)
IO信息: pio(read_count=179, write_count=3050, read_bytes=34988255, write_bytes=109457542, other_count=133361, other_bytes=4927296)
线程数: 337

我们也可以使用循环打印出所有进程名

for pid in psutil.pids():
    try:
        p = psutil.Process(pid)
        print(p.status())
    except Exception as e:
        print(e)

当然查到了进程ID,我们可以kill掉,需要使用signal模块

os.kill(pid, signal.SIGILL)


内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://sulao.cn/post/715.html