psutil学习

本文介绍了如何使用psutil库获取系统网络接口的详细信息,包括net_if_addrs()函数返回的地址信息,net_if_stats()提供的网络接口状态,如速度、双工模式和MTU,以及net_io_counters()统计的网络I/O数据。

1.  net_if_addrs()

    Return the addresses associated to each NIC (network interface
    card) installed on the system as a dictionary whose keys are the
    NIC names and value is a list of namedtuples for each address
    assigned to the NIC. Each namedtuple includes 5 fields:

     - family
     - address
     - netmask
     - broadcast
     - ptp

    'family' can be either socket.AF_INET, socket.AF_INET6 or
    psutil.AF_LINK, which refers to a MAC address.
    'address' is the primary address and it is always set.
    'netmask' and 'broadcast' and 'ptp' may be None.
    'ptp' stands for "point to point" and references the destination
    address on a point to point interface (typically a VPN).
    'broadcast' and 'ptp' are mutually exclusive.

    Note: you can have more than one address of the same family
    associated with each interface.
    

示例:

tun0 : [snic(family=2, address='192.168.8.1', netmask='255.255.255.255', broadcast=None, ptp='192.168.8.2'), snic(family=10, address='fe80::f586:cb28:87d1:436f%tun0', netmask='ffff:ffff:ffff:ffff::', broadcast=None, ptp=None)]
vmnet1 : [snic(family=2, address='192.168.247.1', netmask='255.255.255.0', broadcast='192.168.247.255', ptp=None), snic(family=10, address='fe80::250:56ff:fec0:1%vmnet1', netmask='ffff:ffff:ffff:ffff::', broadcast=None, ptp=None), snic(family=17, address='00:50:56:c0:00:01', netmask=None, broadcast='ff:ff:ff:ff:ff:ff', ptp=None)]
lo : [snic(family=2, address='127.0.0.1', netmask='255.0.0.0', broadcast=None, ptp=None), snic(family=10, address='::1', netmask='ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff', broadcast=None, ptp=None), snic(family=17, address='00:00:00:00:00:00', netmask=None, broadcast=None, ptp=None)]
enp8s0f0 : [snic(family=17, address='00:1b:cd:05:05:24', netmask=None, broadcast='ff:ff:ff:ff:ff:ff', ptp=None)]
enp8s0f1 : [snic(family=17, address='00:1b:cd:05:05:25', netmask=None, broadcast='ff:ff:ff:ff:ff:ff', ptp=None)]
vmnet8 : [snic(family=2, address='172.16.194.1', netmask='255.255.255.0', broadcast='172.16.194.255', ptp=None), snic(family=10, address='fe80::250:56ff:fec0:8%vmnet8', netmask='ffff:ffff:ffff:ffff::', broadcast=None, ptp=None), snic(family=17, address='00:50:56:c0:00:08', netmask=None, broadcast='ff:ff:ff:ff:ff:ff', ptp=None)]
enp4s0f0 : [snic(family=2, address='10.0.110.34', netmask='255.255.255.0', broadcast='10.0.110.255', ptp=None), snic(family=10, address='fe80::ec4:7aff:fe16:2ef0%enp4s0f0', netmask='ffff:ffff:ffff:ffff::', broadcast=None, ptp=None), snic(family=17, address='0c:c4:7a:16:2e:f0', netmask=None, broadcast='ff:ff:ff:ff:ff:ff', ptp=None)]
virbr0 : [snic(family=2, address='192.168.122.1', netmask='255.255.255.0', broadcast='192.168.122.255', ptp=None), snic(family=17, address='52:54:00:46:82:b6', netmask=None, broadcast='ff:ff:ff:ff:ff:ff', ptp=None)]
virbr0-nic : [snic(family=17, address='52:54:00:46:82:b6', netmask=None, broadcast='ff:ff:ff:ff:ff:ff', ptp=None)]
enp4s0f1 : [snic(family=17, address='0c:c4:7a:16:2e:f1', netmask=None, broadcast='ff:ff:ff:ff:ff:ff', ptp=None)]

参数:

family,  示例中的值分别有2, 10, 17, 分别表示AF_INET, AF_INET6, AF_LINK,可以看到这3类对应的address类型分别是ipv4, ipv6, mac

ptp, 

 

2. net_if_stats()

    Return information about each NIC (network interface card)
    installed on the system as a dictionary whose keys are the
    NIC names and value is a namedtuple with the following fields:

     - isup: whether the interface is up (bool)
     - duplex: can be either NIC_DUPLEX_FULL, NIC_DUPLEX_HALF or
               NIC_DUPLEX_UNKNOWN
     - speed: the NIC speed expressed in mega bits (MB); if it can't
              be determined (e.g. 'localhost') it will be set to 0.
     - mtu: the maximum transmission unit expressed in bytes.

 

3. net_io_counters()

    Return network I/O statistics as a namedtuple including
    the following fields:

     - bytes_sent:   number of bytes sent
     - bytes_recv:   number of bytes received
     - packets_sent: number of packets sent
     - packets_recv: number of packets received
     - errin:        total number of errors while receiving
     - errout:       total number of errors while sending
     - dropin:       total number of incoming packets which were dropped
     - dropout:      total number of outgoing packets which were dropped
                     (always 0 on OSX and BSD)

    If pernic is True return the same information for every
    network interface installed on the system as a dictionary
    with network interface names as the keys and the namedtuple
    described above as the values.

 

<think>好的,我需要帮用户解决如何在Python中安装psutil库的问题。首先,用户提到了安装过程中可能出现的报错,比如需要安装python-devel的情况,这在引用[1]和[2]中有提到。特别是Linux环境下,可能需要安装开发包,比如python3-devel,否则编译时会出错。接下来,用户的需求是查找安装方法,所以我要覆盖不同操作系统的情况。根据引用[1],Windows下可以用pip直接安装,但有时候可能需要下载源码或指定镜像源。引用[3]提到使用清华镜像源安装,这样可以加速下载,避免网络问题导致的失败。而引用[4]则介绍了psutil库的作用,说明安装后的用途,增加用户的理解。 然后,我需要分步骤说明安装方法,包括常规安装、镜像源安装,以及解决常见问题。比如在Linux下安装开发依赖,这是编译psutil必须的步骤,否则会报错。还要提到卸载和验证安装是否成功的方法,确保用户能完整操作。另外,用户可能遇到的错误需要给出解决方案,比如安装失败时如何安装依赖库,或者切换镜像源。引用[2]中提到在Linux中使用python3 setup.py install来安装,这可能适用于从源码安装的情况,但大部分用户可能更倾向于使用pip。最后,生成相关问题需要考虑用户可能的后续疑问,比如安装后的使用、跨平台特性、常见错误处理等。确保问题覆盖用户可能遇到的下一步问题,帮助他们深入学习。</think>### 如何在Python中安装psutil库? #### 方法1:通过pip直接安装(推荐) 1. 打开终端(Windows为命令提示符或PowerShell)。 2. 输入以下命令安装最新版本: ```bash pip install psutil ``` 3. 如果使用Python3,可替换为: ```bash python3 -m pip install psutil ``` *适用于所有操作系统*[^4]。 #### 方法2:使用国内镜像加速安装 若遇到网络问题,可指定清华大学镜像源: ```bash pip install -i https://pypi.tuna.tsinghua.edu.cn/simple psutil ``` 或强制使用Python3: ```bash python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple psutil ``` *此方法可解决下载超时问题*[^3]。 #### 方法3:源码编译安装(Linux特殊场景) 1. 下载源码包: ```bash wget https://pypi.python.org/packages/source/p/psutil/psutil-5.9.0.tar.gz ``` 2. 解压并进入目录: ```bash tar -zxvf psutil-5.9.0.tar.gz && cd psutil-5.9.0 ``` 3. 安装前确保已安装开发依赖: ```bash sudo apt-get install python3-dev # Ubuntu/Debian ``` ```bash yum install python3-devel # CentOS/RedHat ``` 4. 执行安装命令: ```bash python3 setup.py install ``` *适用于Linux环境依赖缺失导致的编译错误*[^2]。 --- ### 验证安装是否成功 ```python import psutil print(psutil.cpu_percent()) # 输出CPU使用率 ``` 若未报错且输出数值,说明安装成功[^4]。 --- ### 常见问题解决方案 1. **报错提示缺少Python.h头文件** ➠ 安装对应系统的开发包: - Windows:安装Visual Studio Build Tools - Linux:执行`sudo apt install python3-dev` - macOS:安装Xcode命令行工具 2. **权限不足导致安装失败** ➠ 在命令前添加`sudo`(Linux/macOS)或以管理员身份运行终端(Windows) ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值