psutil模块——进程管理
-
安装
pip install psutil -i https://pypi.tuna.tsinghua.edu.cn/simple
-
进程管理的功能函数,包括获取进程列表,判断是否存在。
函数 详情 psutil.pids() 以列表的形式返回当前正在运行的进程 psutil.pid_exists(1) 判断给点定的pid是否存在 psutil.process_iter() 迭代当前正在运行的进程,返回的是每个进程的Process对象 psutil.Process() 对进程进行封装,可以使用该类的方法获取进行的详细信息,或者给进程发送信号。 -
进程相关信息的方法:
函数 详情 psutil.Process(pid).name 详情 psutil.Process(pid).cmdline 获取启动进程的命令行参数 psutil.Process(pid).create_time 获取进程的创建时间(时间戳格式) psutil.Process(pid).num_fds 进程打开的文件个数 psutil.Process(pid).num_threads 进程的子进程个数 psutil.Process(pid).is_running 判断进程是否正在运行 psutil.Process(pid).send_signal 给进程发送信号,类似与os.kill等 psutil.Process(pid).kill 发送SIGKILL信号结束进程 psutil.Process(pid).terminate 发送SIGTEAM信号结束进程 -
Demo
C:\Users\GSKHD92>python Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import psutil >>> psutil.pids() # 以列表形式查看正在运行的进程 [0, 4, 96, 272, 344, 348, 412, 568, 576, 664, 724, 784, 860, 868, 916, 996, 1016, 1020, 1028, 1052, 1220, 1232, 1240, 1272, 1364, 1436, 1468, 1488, 1500, 1508, 1608, 1644, 1672, 1680, 1688, 1700, 1720, 1772, 1812, 1856, 1876, 1988, 2012, 2052, 2104, 2156, 2180, 2244, 2260, 2268, 2404, 2428, 2440, 2500, 2564, 2640, 2648, 2704, 2800, 2836, 2884, 2908, 2952, 2976, 3040, 3056, 3064, 3076, 3124, 3292, 3356, 3412, 3520, 3528, 3604, 4064, 4148, 4188, 4256, 4264, 4296, 4308, 4316, 4364, 4376, 4388, 4400, 4448, 4456, 4580, 4636, 4652, 4912, 5004, 5184, 5200, 5272, 5292, 5416, 5424, 5496, 5500, 5624, 6164, 6200, 6240, 6248, 6256, 6272, 6308, 6324, 6444, 6456, 6548, 6576, 6584, 6672, 6812, 7060, 7108, 7324, 7428, 7528, 7532, 7644, 7752, 7764, 8024, 8220, 8376, 8544, 8560, 8664, 8696, 8884, 9012, 9056, 9064, 9268, 9588, 9940, 9984, 10024, 10232, 10308, 10452, 10536, 10596, 10836, 10904, 10952, 11300, 11368, 11392, 11420, 12092, 12484, 12692, 12984, 13088, 13412, 13448, 13636, 13708, 13912, 14144, 14216, 14432, 14924, 14968, 15028, 15080, 15416, 15448, 15488, 15664, 15668, 16000, 16012, 16448, 16508, 16664, 16768, 17720, 18672, 18744, 19068, 19096, 19288, 19340, 19344, 19540, 19744, 20452] >>> psutil.pid_exists(96) # 查看进程运行状态,以布尔形式显示 True >>> list(psutil.process_iter())[:3] # 迭代当前正在运行进程,查看列表中前三个实例的信息 [psutil.Process(pid=0, name='System Idle Process'), psutil.Process(pid=4, name='System'), psutil.Process(pid=96, name='Registry', started='2020-04-02 15:07:44')] >>> process = psutil.Process(96) # 通过进程号实例化对象 >>> print(process) psutil.Process(pid=96, name='Registry', started='2020-04-02 15:07:44') >>> process.name() 'Registry' >>> process.create_time() 1585811264.5332725 >>> process.num_threads() 3 >>>