Python3 常用第三方模块

Pillow

pillow简介

pillow是一个常用的图像处理标准库。该库基于Python2的PIL(pyhton image library),功能强大,API简单易用。

安装方法

如果安装了anaconda则可以直接用,也可以通过pip安装:

sudo pip3 install pillow

上述命令需要输入密码以获取权限。

图像处理

缩放、切片、旋转、滤镜、输出文字、调色板等。

缩放

#!/usr/bin/python3
# coding=utf-8
from PIL import Image
im = Image.open('./test.jpg')#打开当前路径下的图像
w, h = im.size #获取图像的宽度和高度
print("Original size = %sx%s"%(w,h))#输出原始图像的像素值
im.thumbnail((w//2, h//2))#对图像进行缩放
print('resize image  = %xsx%s'%(w//2, h//2))
im.save('thumbnail.jpg',"jpeg")#将缩放后的图像保存为JPEG格式

滤镜

#!/usr/bin/python3
# coding=utf-8
from PIL import Image,ImageFilter
im = Image.open('./test.jpg')#打开当前路径下的图像
im2 = im.filter(ImageFilter.FIND_EDGES)
im2.save('filter.jpg','jpeg')

模糊

#!/usr/bin/python3
# coding=utf-8
from PIL import Image,ImageFilter
im = Image.open('./test.jpg')#打开当前路径下的图像
im2 = im.filter(ImageFilter.BLUR)
im2.save('blur.jpg','jpeg')

绘图

#!/usr/bin/python3
# coding=utf-8
from PIL import Image,ImageFilter, ImageDraw, ImageFont
import random
def rndChar():#字符
    return chr(random.randint(65,90))
def rndColor1():#颜色1,返回RGB值
    return (random.randint(64,255),random.randint(64,255),random.randint(64,255))
def rndColor2():#颜色2, 返回RGB值
    return (random.randint(32,127),random.randint(32,127),random.randint(32,127))
width = 60 * 4
height = 60
image = Image.new('RGB',(width,height),(255,255,255))#画布宽度,纯白
font = ImageFont.truetype('/Library/Fonts/Arial.ttf',36)#字体位置
draw = ImageDraw.Draw(image)
for x in range(width):#绘制画布
    for y in range(height):
        draw.point((x,y),fill=rndColor1())
for t in range(4):#绘制文字
    draw.text((60*t+10,10),rndChar(),font=font, fill = rndColor2())
image = image.filter(ImageFilter.BLUR)#设置图片滤镜:模糊
image.save('code.jpg','jpeg')

requests

requests简介

该库主要用于处理URL资源,非常强大而且方便。

安装和使用

安装:

sudo pip3 install requests

上述命令需要输入密码。
使用:
通过get方法访问一个页面,

#!/usr/bin/python3
# coding=utf-8
import requests
url = 'https://www.zhihu.com/'
r = requests.get(url, timeout=5)
print(r.status_code)
print(r.text)

有时候可能会出现连接超时的情况,我们可以传入一个timeout参数指定等待时间,防止无限等待。

chardet

chardet简介

该库用于检测编码,在处理第三方网页的时候非常实用。

安装和使用

安装:
如果安装了anaconda是可以直接用的,否则可以通过pip安装:

sudo pip3 install chardet

使用:
当我们获取了一个数据bytes时,我们可以用chardet检测其编码类型:

#!/usr/bin/python3
# coding=utf-8
import chardet
str1 = b'Hello,world!'
str2 = '苟利国家生死以,岂因祸福避趋之'.encode('gbk')
str3 = '我远青山,山送我亦远'.encode('utf-8')
str4 = '最新の主要二の'.encode('euc-jp')
print('str1:', chardet.detect(str1))
print('str2:', chardet.detect(str2))
print('str3:', chardet.detect(str3))
print('str4:', chardet.detect(str4))

输出结果:

str1: {‘encoding’: ‘ascii’, ‘confidence’: 1.0, ‘language’: ‘’}
str2: {‘encoding’: ‘GB2312’, ‘confidence’: 0.99, ‘language’: ‘Chinese’}
str3: {‘encoding’: ‘utf-8’, ‘confidence’: 0.99, ‘language’: ‘’}
str4: {‘encoding’: ‘EUC-JP’, ‘confidence’: 0.99, ‘language’: ‘Japanese’}

psutil

psutil简介

psutil,process and system utilities。监控系统,除了使用subprocess模块外,还可以使用psrtil这个模块。该模块可以通过少数代码实现系统监控,可以跨平台使用。

安装

如果安装了anaconda则可以直接使用,否则依然使用pip安装:

sudo pip3 install psutil

获取CPU信息

CPU信息

#!/usr/bin/python3
# coding=utf-8
import psutil, time
startTime = time.time()
print(psutil.cpu_count())#cpu逻辑数量
print(psutil.cpu_count(logical=False))#CPU物理核心
endTime = time.time()
print('time:%.5f'%(endTime-startTime))#程序运行时间

输出结果:

8
4
time:0.00005

上述结果中,8表示8核非超线程,4表示4核超线程
统计CPU的用户、系统、空闲时间

#!/usr/bin/python3
# coding=utf-8
import psutil
print('cpu_time',psutil.cpu_times())

cpu_time scputimes(user=2246.83, nice=0.0, system=1214.64, idle=34860.11)

CPU使用率统计

#!/usr/bin/python3
# coding=utf-8
import psutil
for i in range(10):
        print(i+1,':',psutil.cpu_percent(interval=1, percpu=True))#当interval>=0且percpu值为True时,返回这一段时间内每个CPU的CPU占比的列表

1 : [21.6, 1.0, 11.0, 0.0, 9.9, 1.0, 7.9, 0.0]
2 : [29.0, 4.0, 26.7, 4.0, 23.0, 4.0, 19.8, 4.0]
3 : [34.0, 4.0, 34.7, 3.0, 31.7, 3.0, 26.0, 3.0]
4 : [30.7, 3.9, 24.0, 2.0, 23.0, 2.0, 20.0, 2.0]
5 : [33.0, 2.0, 32.0, 2.0, 26.0, 2.0, 22.0, 2.0]
6 : [37.0, 2.0, 27.7, 3.0, 24.8, 3.0, 22.0, 2.0]
7 : [24.8, 2.0, 20.0, 1.0, 18.8, 0.0, 14.9, 1.0]
8 : [35.0, 4.0, 32.0, 4.0, 28.6, 5.0, 23.2, 4.0]
9 : [32.0, 2.0, 28.0, 2.0, 22.8, 2.0, 20.8, 1.0]
10 : [32.3, 3.0, 24.0, 1.0, 24.0, 1.0, 17.0, 2.0]

获取内存信息

使用psutil获取物理内存和交换内存信息,分别使用virtual_memory()_memory()函数:

#!/usr/bin/python3
# coding=utf-8
import psutil
print('virtual:',psutil.virtual_memory())
print('swap:',psutil.swap_memory())

virtual: svmem(total=17179869184, available=5926793216, percent=65.5, used=15037566976, free=513159168, active=
7046119424, inactive=5413634048, wired=2577813504)
swap: sswap(total=0, used=0, free=0, percent=0, sin=2976493568, sout=0)

上述结果显示,总内存大小为17179869184字节=16GB,可用5783588864字节=5.36G,已占用内存比例是65.5%。交换区的大小我确实没看懂orz。

获取磁盘信息

可以通过psutil获取磁盘分区、磁盘使用率和磁盘IO信息。

#!/usr/bin/python3
# coding=utf-8
import psutil
print(psutil.disk_partitions())#获取磁盘分区信息
print(psutil.disk_usage('/'))#获取磁盘使用情况
print(psutil.disk_io_counters())#获取磁盘IO信息

[sdiskpart(device=’/dev/disk1s5’, mountpoint=’/’, fstype=‘apfs’, opts=‘ro,local,rootfs,dovolfs,journaled,multil
abel’), sdiskpart(device=’/dev/disk1s1’, mountpoint=’/System/Volumes/Data’, fstype=‘apfs’, opts=‘rw,local,dovol
fs,dontbrowse,journaled,multilabel’), sdiskpart(device=’/dev/disk1s4’, mountpoint=’/private/var/vm’, fstype=‘ap
fs’, opts=‘rw,local,dovolfs,dontbrowse,journaled,multilabel’)]
sdiskusage(total=499963174912, used=10331164672, free=354561720320, percent=2.8)
sdiskio(read_count=345457, write_count=222435, read_bytes=4131446784, write_bytes=1664950272, read_time=199853,
write_time=234064)

获取网络信息

#!/usr/bin/python3
# coding=utf-8
import psutil
print('net_io:',psutil.net_io_counters())#获取网络读写字节/包的个数
print('net_if:',psutil.net_if_stats())#获取网络接口状态

net_io: snetio(bytes_sent=14249984, bytes_recv=49957888, packets_sent=110008, packets_recv=63056, errin=0, erro
ut=534, dropin=0, dropout=0)
net_if: {‘lo0’: snicstats(isup=True, duplex=<NicDuplex.NIC_DUPLEX_UNKNOWN: 0>, speed=0, mtu=16384), ‘gif0’: sni
cstats(isup=False, duplex=<NicDuplex.NIC_DUPLEX_UNKNOWN: 0>, speed=0, mtu=1280), ‘stf0’: snicstats(isup=False,
duplex=<NicDuplex.NIC_DUPLEX_UNKNOWN: 0>, speed=0, mtu=1280), ‘ap1’: snicstats(isup=False, duplex=<NicDuplex.NIC_DUPLEX_UNKNOWN: 0>, speed=0, mtu=1500), ‘en0’: snicstats(isup=True, duplex=<NicDuplex.NIC_DUPLEX_UNKNOWN: 0>, speed=0, mtu=1500), ‘en5’: snicstats(isup=True, duplex=<NicDuplex.NIC_DUPLEX_FULL: 2>, speed=100, mtu=1500), ‘en1’: snicstats(isup=True, duplex=<NicDuplex.NIC_DUPLEX_FULL: 2>, speed=0, mtu=1500), ‘en2’: snicstats(isup=True, duplex=<NicDuplex.NIC_DUPLEX_FULL: 2>, speed=0, mtu=1500), ‘en3’: snicstats(isup=True, duplex=<NicDuplex.NIC_DUPLEX_FULL: 2>, speed=0, mtu=1500), ‘en4’: snicstats(isup=True, duplex=<NicDuplex.NIC_DUPLEX_FULL: 2>, speed=0, mtu=1500), ‘bridge0’: snicstats(isup=True, duplex=<NicDuplex.NIC_DUPLEX_UNKNOWN: 0>, speed=0, mtu=1500), ‘p2p0’: snicstats(isup=True, duplex=<NicDuplex.NIC_DUPLEX_UNKNOWN: 0>, speed=0, mtu=2304), ‘awdl0’: snicstats(isup=True, duplex=<NicDuplex.NIC_DUPLEX_UNKNOWN: 0>, speed=0, mtu=1484), ‘llw0’: snicstats(isup=True, duplex=<NicDuplex.NIC_DUPLEX_UNKNOWN: 0>, speed=0, mtu=1500), ‘utun0’: snicstats(isup=True, duplex=<NicDuplex.NIC_DUPLEX_UNKNOWN: 0>, speed=0, mtu=1380), ‘utun1’: snicstats(isup=True, duplex=<NicDuplex.NIC_DUPLEX_UNKNOWN: 0>, speed=0, mtu=2000)}

如果想要获取网络连接信息,则使用net_connections(),很大概率会遇到 psutil._exceptions.AccessDenied: psutil.AccessDenied (pid=9730) 错误,原因是psutil走的是系统的结构,获取网络连接信息需要root权限,这种情况下可以用sudo启动Python交互环境。

(base) zl@zl ~ % sudo python3
>>> import psutil
>>> psutil.net_connections()

[sconn(fd=3, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=547), raddr=(), status=‘NONE
‘, pid=5217), sconn(fd=5, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘192.168.2.1’, port=5351), r
addr=(), status=‘NONE’, pid=5215), sconn(fd=3, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.
0’, port=137), raddr=(), status=‘NONE’, pid=5210), sconn(fd=4, family=<AddressFamily.AF_INET: 2>, type=2, laddr
=addr(ip=‘0.0.0.0’, port=138), raddr=(), status=‘NONE’, pid=5210), sconn(fd=3, family=<AddressFamily.AF_INET6:
30>, type=1, laddr=addr(ip=‘fe80:6::aede:48ff:fe00:1122’, port=49268), raddr=addr(ip=‘fe80:6::aede:48ff:fe33:44
55’, port=49250), status=‘ESTABLISHED’, pid=815), sconn(fd=13, family=<AddressFamily.AF_INET: 2>, type=1, laddr
=addr(ip=‘127.0.0.1’, port=15292), raddr=(), status=‘LISTEN’, pid=716), sconn(fd=6, family=<AddressFamily.AF_IN
ET: 2>, type=1, laddr=addr(ip=‘127.0.0.1’, port=6379), raddr=(), status=‘LISTEN’, pid=665), sconn(fd=7, family=
<AddressFamily.AF_INET6: 30>, type=1, laddr=addr(ip=’::1’, port=6379), raddr=(), status=‘LISTEN’, pid=665), sco
nn(fd=4, family=<AddressFamily.AF_INET6: 30>, type=1, laddr=addr(ip=‘fe80:6::aede:48ff:fe00:1122’, port=49598),
raddr=addr(ip=‘fe80:6::aede:48ff:fe33:4455’, port=49252), status=‘ESTABLISHED’, pid=654), sconn(fd=44, family=<AddressFamily.AF_INET: 2>, type=1, laddr=addr(ip=‘127.0.0.1’, port=64032), raddr=(), status=‘LISTEN’, pid=595), sconn(fd=21, family=<AddressFamily.AF_INET: 2>, type=1, laddr=addr(ip=‘192.168.1.175’, port=49664), raddr=addr(ip=‘47.75.132.208’, port=2333), status=‘ESTABLISHED’, pid=534), sconn(fd=25, family=<AddressFamily.AF_INET: 2>, type=1, laddr=addr(ip=‘192.168.1.175’, port=50009), raddr=addr(ip=‘203.208.39.225’, port=443), status=‘CLOSE’, pid=534), sconn(fd=28, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=5353), raddr=(), status=‘NONE’, pid=534), sconn(fd=29, family=<AddressFamily.AF_INET: 2>, type=1, laddr=addr(ip=‘192.168.1.175’, port=49620), raddr=addr(ip=‘74.125.204.188’, port=443), status=‘ESTABLISHED’, pid=534), sconn(fd=4, family=<AddressFamily.AF_INET6: 30>, type=1, laddr=addr(ip=‘fe80:6::aede:48ff:fe00:1122’, port=49162), raddr=addr(ip=‘fe80:6::aede:48ff:fe33:4455’, port=49247), status=‘ESTABLISHED’, pid=484), sconn(fd=3, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=455), sconn(fd=7, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=455), sconn(fd=9, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=455), sconn(fd=18, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=442), sconn(fd=22, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=442), sconn(fd=23, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=442), sconn(fd=24, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=442), sconn(fd=25, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=442), sconn(fd=26, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=442), sconn(fd=29, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=442), sconn(fd=30, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=442), sconn(fd=7, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=425), sconn(fd=5, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=423), sconn(fd=3, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=421), sconn(fd=4, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=421), sconn(fd=5, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=421), sconn(fd=6, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=421), sconn(fd=5, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=56438), raddr=(), status=‘NONE’, pid=393), sconn(fd=7, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=393), sconn(fd=23, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=385), sconn(fd=3, family=<AddressFamily.AF_INET: 2>, type=1, laddr=addr(ip=‘0.0.0.0’, port=49597), raddr=(), status=‘LISTEN’, pid=382), sconn(fd=4, family=<AddressFamily.AF_INET6: 30>, type=1, laddr=addr(ip=’::’, port=49597), raddr=(), status=‘LISTEN’, pid=382), sconn(fd=7, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=382), sconn(fd=8, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=382), sconn(fd=6, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=375), sconn(fd=20, family=<AddressFamily.AF_INET: 2>, type=1, laddr=addr(ip=‘192.168.1.175’, port=49630), raddr=addr(ip=‘111.30.181.201’, port=80), status=‘ESTABLISHED’, pid=375), sconn(fd=21, family=<AddressFamily.AF_INET: 2>, type=1, laddr=addr(ip=‘192.168.1.175’, port=49630), raddr=addr(ip=‘111.30.181.201’, port=80), status=‘ESTABLISHED’, pid=375), sconn(fd=35, family=<AddressFamily.AF_INET: 2>, type=1, laddr=addr(ip=‘127.0.0.1’, port=4300), raddr=(), status=‘LISTEN’, pid=375), sconn(fd=36, family=<AddressFamily.AF_INET: 2>, type=1, laddr=addr(ip=‘127.0.0.1’, port=4301), raddr=(), status=‘LISTEN’, pid=375), sconn(fd=6, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=368), sconn(fd=13, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=368), sconn(fd=32, family=<AddressFamily.AF_INET6: 30>, type=1, laddr=addr(ip=’::192.168.1.175’, port=49646), raddr=addr(ip=’::121.51.13.106’, port=8080), status=‘ESTABLISHED’, pid=368), sconn(fd=3, family=<AddressFamily.AF_INET6: 30>, type=1, laddr=addr(ip=‘fe80:6::aede:48ff:fe00:1122’, port=49160), raddr=addr(ip=‘fe80:6::aede:48ff:fe33:4455’, port=49237), status=‘ESTABLISHED’, pid=353), sconn(fd=3, family=<AddressFamily.AF_INET6: 30>, type=1, laddr=addr(ip=‘fe80:6::aede:48ff:fe00:1122’, port=49157), raddr=addr(ip=‘fe80:6::aede:48ff:fe33:4455’, port=49259), status=‘ESTABLISHED’, pid=327), sconn(fd=4, family=<AddressFamily.AF_INET6: 30>, type=1, laddr=addr(ip=‘fe80:6::aede:48ff:fe00:1122’, port=49159), raddr=addr(ip=‘fe80:6::aede:48ff:fe33:4455’, port=49243), status=‘ESTABLISHED’, pid=327), sconn(fd=5, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=270), sconn(fd=6, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=270), sconn(fd=13, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=0), raddr=(), status=‘NONE’, pid=270), sconn(fd=14, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=270), sconn(fd=15, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=270), sconn(fd=19, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=270), sconn(fd=21, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=270), sconn(fd=25, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=270), sconn(fd=27, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=270), sconn(fd=30, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=270), sconn(fd=31, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=270), sconn(fd=34, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=270), sconn(fd=36, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=270), sconn(fd=38, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=270), sconn(fd=40, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=270), sconn(fd=12, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=247), sconn(fd=6, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=5353), raddr=(), status=‘NONE’, pid=246), sconn(fd=7, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=5353), raddr=(), status=‘NONE’, pid=246), sconn(fd=13, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=58279), raddr=(), status=‘NONE’, pid=246), sconn(fd=18, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=58279), raddr=(), status=‘NONE’, pid=246), sconn(fd=19, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=58785), raddr=(), status=‘NONE’, pid=246), sconn(fd=20, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=60420), raddr=(), status=‘NONE’, pid=246), sconn(fd=22, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=49689), raddr=(), status=‘NONE’, pid=246), sconn(fd=26, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=49689), raddr=(), status=‘NONE’, pid=246), sconn(fd=27, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=60420), raddr=(), status=‘NONE’, pid=246), sconn(fd=28, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=55733), raddr=(), status=‘NONE’, pid=246), sconn(fd=29, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=55733), raddr=(), status=‘NONE’, pid=246), sconn(fd=31, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=58785), raddr=(), status=‘NONE’, pid=246), sconn(fd=34, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=60374), raddr=(), status=‘NONE’, pid=246), sconn(fd=35, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=56263), raddr=(), status=‘NONE’, pid=246), sconn(fd=37, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=51080), raddr=(), status=‘NONE’, pid=246), sconn(fd=38, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=51080), raddr=(), status=‘NONE’, pid=246), sconn(fd=40, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=53602), raddr=(), status=‘NONE’, pid=246), sconn(fd=41, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=53602), raddr=(), status=‘NONE’, pid=246), sconn(fd=43, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=49853), raddr=(), status=‘NONE’, pid=246), sconn(fd=44, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=49853), raddr=(), status=‘NONE’, pid=246), sconn(fd=47, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=51521), raddr=(), status=‘NONE’, pid=246), sconn(fd=48, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=51521), raddr=(), status=‘NONE’, pid=246), sconn(fd=52, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=51506), raddr=(), status=‘NONE’, pid=246), sconn(fd=54, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=51506), raddr=(), status=‘NONE’, pid=246), sconn(fd=56, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=56263), raddr=(), status=‘NONE’, pid=246), sconn(fd=57, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=60995), raddr=(), status=‘NONE’, pid=246), sconn(fd=62, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=51758), raddr=(), status=‘NONE’, pid=246), sconn(fd=64, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=51758), raddr=(), status=‘NONE’, pid=246), sconn(fd=65, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=50945), raddr=(), status=‘NONE’, pid=246), sconn(fd=66, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=50945), raddr=(), status=‘NONE’, pid=246), sconn(fd=67, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=49219), raddr=(), status=‘NONE’, pid=246), sconn(fd=68, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=60995), raddr=(), status=‘NONE’, pid=246), sconn(fd=69, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=60374), raddr=(), status=‘NONE’, pid=246), sconn(fd=70, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=49219), raddr=(), status=‘NONE’, pid=246), sconn(fd=71, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=59381), raddr=(), status=‘NONE’, pid=246), sconn(fd=72, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=59381), raddr=(), status=‘NONE’, pid=246), sconn(fd=74, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=59867), raddr=(), status=‘NONE’, pid=246), sconn(fd=75, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=59867), raddr=(), status=‘NONE’, pid=246), sconn(fd=76, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=58032), raddr=(), status=‘NONE’, pid=246), sconn(fd=77, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=58032), raddr=(), status=‘NONE’, pid=246), sconn(fd=78, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=53190), raddr=(), status=‘NONE’, pid=246), sconn(fd=80, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=53190), raddr=(), status=‘NONE’, pid=246), sconn(fd=93, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=52466), raddr=(), status=‘NONE’, pid=246), sconn(fd=94, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=56147), raddr=(), status=‘NONE’, pid=246), sconn(fd=96, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=57442), raddr=(), status=‘NONE’, pid=246), sconn(fd=97, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=57442), raddr=(), status=‘NONE’, pid=246), sconn(fd=100, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=51095), raddr=(), status=‘NONE’, pid=246), sconn(fd=101, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=51095), raddr=(), status=‘NONE’, pid=246), sconn(fd=109, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=54379), raddr=(), status=‘NONE’, pid=246), sconn(fd=110, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=54379), raddr=(), status=‘NONE’, pid=246), sconn(fd=111, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=56595), raddr=(), status=‘NONE’, pid=246), sconn(fd=112, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=56595), raddr=(), status=‘NONE’, pid=246), sconn(fd=119, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=56147), raddr=(), status=‘NONE’, pid=246), sconn(fd=121, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=55155), raddr=(), status=‘NONE’, pid=246), sconn(fd=122, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=65037), raddr=(), status=‘NONE’, pid=246), sconn(fd=123, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=65037), raddr=(), status=‘NONE’, pid=246), sconn(fd=124, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=54815), raddr=(), status=‘NONE’, pid=246), sconn(fd=125, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=54815), raddr=(), status=‘NONE’, pid=246), sconn(fd=126, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=55155), raddr=(), status=‘NONE’, pid=246), sconn(fd=127, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=60101), raddr=(), status=‘NONE’, pid=246), sconn(fd=128, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=60101), raddr=(), status=‘NONE’, pid=246), sconn(fd=129, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=52466), raddr=(), status=‘NONE’, pid=246), sconn(fd=130, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=52652), raddr=(), status=‘NONE’, pid=246), sconn(fd=131, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=52652), raddr=(), status=‘NONE’, pid=246), sconn(fd=132, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=63728), raddr=(), status=‘NONE’, pid=246), sconn(fd=134, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=63728), raddr=(), status=‘NONE’, pid=246), sconn(fd=135, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=49182), raddr=(), status=‘NONE’, pid=246), sconn(fd=136, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=49182), raddr=(), status=‘NONE’, pid=246), sconn(fd=138, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=59492), raddr=(), status=‘NONE’, pid=246), sconn(fd=139, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=59492), raddr=(), status=‘NONE’, pid=246), sconn(fd=140, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=52768), raddr=(), status=‘NONE’, pid=246), sconn(fd=141, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=52768), raddr=(), status=‘NONE’, pid=246), sconn(fd=142, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=52692), raddr=(), status=‘NONE’, pid=246), sconn(fd=143, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=52692), raddr=(), status=‘NONE’, pid=246), sconn(fd=144, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=56727), raddr=(), status=‘NONE’, pid=246), sconn(fd=145, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=56727), raddr=(), status=‘NONE’, pid=246), sconn(fd=146, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=65173), raddr=(), status=‘NONE’, pid=246), sconn(fd=147, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=65173), raddr=(), status=‘NONE’, pid=246), sconn(fd=148, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=50930), raddr=(), status=‘NONE’, pid=246), sconn(fd=149, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=50930), raddr=(), status=‘NONE’, pid=246), sconn(fd=150, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=49181), raddr=(), status=‘NONE’, pid=246), sconn(fd=151, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=49181), raddr=(), status=‘NONE’, pid=246), sconn(fd=152, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=53), raddr=(), status=‘NONE’, pid=246), sconn(fd=153, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=53), raddr=(), status=‘NONE’, pid=246), sconn(fd=154, family=<AddressFamily.AF_INET: 2>, type=1, laddr=addr(ip=‘0.0.0.0’, port=53), raddr=(), status=‘LISTEN’, pid=246), sconn(fd=155, family=<AddressFamily.AF_INET6: 30>, type=1, laddr=addr(ip=’::’, port=53), raddr=(), status=‘LISTEN’, pid=246), sconn(fd=156, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=62171), raddr=(), status=‘NONE’, pid=246), sconn(fd=157, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=62171), raddr=(), status=‘NONE’, pid=246), sconn(fd=7, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=177), sconn(fd=5, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=169), sconn(fd=5, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=165), sconn(fd=28, family=<AddressFamily.AF_INET6: 30>, type=1, laddr=addr(ip=’::’, port=3306), raddr=(), status=‘LISTEN’, pid=160), sconn(fd=31, family=<AddressFamily.AF_INET6: 30>, type=1, laddr=addr(ip=’::’, port=33060), raddr=(), status=‘LISTEN’, pid=160), sconn(fd=9, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=158), sconn(fd=10, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=158), sconn(fd=4, family=<AddressFamily.AF_INET6: 30>, type=2, laddr=addr(ip=’::’, port=88), raddr=(), status=‘NONE’, pid=156), sconn(fd=5, family=<AddressFamily.AF_INET6: 30>, type=1, laddr=addr(ip=’::’, port=88), raddr=(), status=‘LISTEN’, pid=156), sconn(fd=6, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=88), raddr=(), status=‘NONE’, pid=156), sconn(fd=7, family=<AddressFamily.AF_INET: 2>, type=1, laddr=addr(ip=‘0.0.0.0’, port=88), raddr=(), status=‘LISTEN’, pid=156), sconn(fd=8, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=150), sconn(fd=16, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=59775), raddr=(), status=‘NONE’, pid=137), sconn(fd=12, family=<AddressFamily.AF_INET6: 30>, type=1, laddr=addr(ip=‘fe80:6::aede:48ff:fe00:1122’, port=49158), raddr=addr(ip=‘fe80:6::aede:48ff:fe33:4455’, port=49244), status=‘ESTABLISHED’, pid=123), sconn(fd=14, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=116), sconn(fd=17, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=116), sconn(fd=18, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=0), raddr=(), status=‘NONE’, pid=116), sconn(fd=254, family=<AddressFamily.AF_INET6: 30>, type=1, laddr=addr(ip=‘fe80:6::aede:48ff:fe00:1122’, port=49152), raddr=addr(ip=‘fe80:6::aede:48ff:fe33:4455’, port=59602), status=‘ESTABLISHED’, pid=106), sconn(fd=321, family=<AddressFamily.AF_INET6: 30>, type=1, laddr=addr(ip=‘fe80:6::aede:48ff:fe00:1122’, port=49153), raddr=(), status=‘LISTEN’, pid=106), sconn(fd=322, family=<AddressFamily.AF_INET6: 30>, type=1, laddr=addr(ip=‘fe80:6::aede:48ff:fe00:1122’, port=49154), raddr=(), status=‘LISTEN’, pid=106), sconn(fd=323, family=<AddressFamily.AF_INET6: 30>, type=1, laddr=addr(ip=‘fe80:6::aede:48ff:fe00:1122’, port=49155), raddr=(), status=‘LISTEN’, pid=106), sconn(fd=324, family=<AddressFamily.AF_INET6: 30>, type=1, laddr=addr(ip=‘fe80:6::aede:48ff:fe00:1122’, port=49156), raddr=(), status=‘LISTEN’, pid=106), sconn(fd=325, family=<AddressFamily.AF_INET6: 30>, type=1, laddr=addr(ip=‘fe80:6::aede:48ff:fe00:1122’, port=49157), raddr=(), status=‘LISTEN’, pid=106), sconn(fd=7, family=<AddressFamily.AF_INET6: 30>, type=1, laddr=addr(ip=’::’, port=5900), raddr=(), status=‘LISTEN’, pid=1), sconn(fd=8, family=<AddressFamily.AF_INET: 2>, type=1, laddr=addr(ip=‘0.0.0.0’, port=5900), raddr=(), status=‘LISTEN’, pid=1), sconn(fd=11, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=67), raddr=(), status=‘NONE’, pid=1), sconn(fd=20, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=138), raddr=(), status=‘NONE’, pid=1), sconn(fd=21, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=67), raddr=(), status=‘NONE’, pid=1), sconn(fd=25, family=<AddressFamily.AF_INET6: 30>, type=1, laddr=addr(ip=’::’, port=5900), raddr=(), status=‘LISTEN’, pid=1), sconn(fd=26, family=<AddressFamily.AF_INET: 2>, type=1, laddr=addr(ip=‘0.0.0.0’, port=5900), raddr=(), status=‘LISTEN’, pid=1), sconn(fd=37, family=<AddressFamily.AF_INET6: 30>, type=1, laddr=addr(ip=’::1’, port=8021), raddr=(), status=‘LISTEN’, pid=1), sconn(fd=39, family=<AddressFamily.AF_INET: 2>, type=1, laddr=addr(ip=‘127.0.0.1’, port=8021), raddr=(), status=‘LISTEN’, pid=1), sconn(fd=41, family=<AddressFamily.AF_INET: 2>, type=2, laddr=addr(ip=‘0.0.0.0’, port=137), raddr=(), status=‘NONE’, pid=1), sconn(fd=42, family=<AddressFamily.AF_INET6: 30>, type=1, laddr=addr(ip=’::1’, port=8021), raddr=(), status=‘LISTEN’, pid=1), sconn(fd=44, family=<AddressFamily.AF_INET: 2>, type=1, laddr=addr(ip=‘127.0.0.1’, port=8021), raddr=(), status=‘LISTEN’, pid=1)]

获取进程信息

可以获取所有进程的详细信息:

>>> psutil.pids()

输出结果:

[10658, 10586, 10581, 10579, 10578, 10576, 10510, 10352, 10346,

]

该模块还有一个test()函数可以模拟出ps命令的效果,列出所有用户、进程ID等信息:

psutil.test()

输出结果:

USER PID %MEM VSZ RSS TTY START TIME COMMAND
root 0 7.1 78447428 1190352 ? Jul30 04:08 kernel_task
root 1 0.1 4373084 20024 ? Jul30 00:19 launchd
root 106 0.1 4382352 12220 ? Jul30 00:03 UserEventAgent
root 109 ? 4317388 2380 ? Jul30 00:00 uninstalld
root 110 0.2 4895336 26608 ? Jul30 00:13 kextd
root 111 0.1 4361556 9500 ? Jul30 00:08 fseventsd
root 112 0.1 4382760 13352 ? Jul30 00:00 mediaremoted
root 115 0.1 4390368 15296 ? Jul30 00:02 systemstats
root 116 0.1 4385028 9704 ? Jul30 00:02 configd
root 117 ? 4317120 1700 ? Jul30 00:00 endpointsecurityd
root 118 ? 4380976 7324 ? Jul30 00:08 powerd

小结

psutil库使得我们能很方便地获取系统信息。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值