システムのパフォーマンス情報モジュールpsutil

序文

psutilクロスプラットフォームライブラリであり、容易にCPU等の情報、メモリ、ディスク、ネットワーク、を含むシステム動作の金のCENシステムの使用率を得ることができ、それは主にシステム監視、管理、分析、およびシステム・リソースの制約およびプロセスで使用されています。このような、自由、などのps、トップ、lsofは、netstatコマンド、ifconfigコマンド、として、同じコマンドラインツールの機能を実現します

通常、私たちは、このような物理メモリの現在の合計サイズへのアクセスなど、情報システムは、多くの場合、達成するためにシェルを調製するために使用され得ます

[[email protected] ~]$ free -m
             total       used       free     shared    buffers     cached
Mem:           981        899         81         15         44        149
-/+ buffers/cache:        705        275
Swap:         1983        999        984
[[email protected] ~]$ 

簡単に取得psutilのPythonライブラリを使用します

だから、psutilは、サードパーティのモジュールは、あなたがインストールする必要があります

Windowsの場合:

pip3 install psutil

Linuxの場合:

wget https://pypi.python.org/packages/source/p/psutil/psutil-3.2.1.tar.gz --no-check-certificate
tar zxvf psutil-3.2.1.tar.gz
cd psutil-3.2.1
python3 setup.py install

次のように使用します。

import psutil                       # 导入psutil模块
mem = psutil.virtual_memory()       # 实例化出来mem对象
print(mem)                          # 查看完整内存信息
print(mem.total)                    # 查看内存总大小,单位是字节
print(mem.used)                     # 查看内存使用大小

サイズを取得した後、我々は、変換するための変換ツールを使用することができます

システムパフォーマンスの情報を取得します

CPU

Linuxオペレーティングシステム、CPUの使用率は、次のコンポーネントがあります。

  • ユーザ時間:ユーザプロセスの実行時間の割合
  • システム時間:カーネルの実行プロセスと時間の割合を中断
  • IOを待っ:C​​PUがIDLE(アイドル)に時間の割合の状態であるため、IOを待ちます
  • アイドル:状態空間におけるCPU時間の割合を
print(psutil.cpu_times())           # 获取CPU 完整的信息
print(psutil.cpu_times().user)      # 获取用户user的cpu时间比
print(psutil.cpu_count())           # 获取CPU 的逻辑个数
print(psutil.cpu_count(logical=False))  # 获取CPU 的物理个数
print(psutil.cpu_percent())         # 获取cpu的使用率
print(psutil.cpu_percent(1))

メモリ

Linuxオペレーティングシステム、メモリの使用率は、次のコンポーネントがあります。

  • 合計(合計メモリ)
  • 使用される(使用されるメモリの数)
  • 空き(空きメモリの数)
  • バッファ(バッファ番号が使用されます)
  • キャッシュ(キャッシュ使用回数)
  • スワップ(SWAP番号が使用されます)
mem = psutil.virtual_memory()       # 实例化出来mem对象
print(mem)                          # 查看完整内存信息
print(mem.total)                    # 查看内存总大小
print(mem.used)                     # 查看内存使用大小

ディスク

システムディスク情報、ディスク使用率で、つまり私たちは、IO情報にもっと注意を払います。ディスクの使用率が得ることができるpsutil.disk_usage方法を取得します

print(psutil.disk_partitions())     # 获取磁盘完整信息
print(psutil.disk_usage("/"))       # 获取分区的使用参数
print(psutil.disk_io_counters())    # 获取磁盘的读写信息

ネットワーク情報

ネットワーク情報はBYTES_SENT(送信されたバイトの数)、受信したバイト数、等を含みます

print(psutil.net_io_counters())     # 获取完整的网络信息

他の情報システム

上で紹介したシステムに関する基本的な情報を入手するには、いくつかの方法に加えて、psutilモジュールもサポートし、ユーザのログイン、起動時間やその他の情報を取得

print(psutil.users())               # 获取当前登录系统的用户信息
print(psutil.boot_time())           # 获取开机时间,以时间戳格式返回
import datetime
res = datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d" "%H:%M:%S")
print(res)                          # 格式化为人们看得懂的时间

システム・プロセス管理

取得現在のシステムは、情報、運用、保守担当者がこの情報をすることができ、開始時刻を表示またはCPU等の親和性、メモリ使用量、IO情報、ソケット接続、スレッド、設定プロセスなどのアプリケーションの情報に基づいた動作状態を、作ることができるプロセスリソース使用率は、良い基準を提供する、開発者のコ​​ードの最適化のために、指定されたプロセスが生きている障害箇所のデータを示します

プロセス情報

情報を取得するpsutilプロセス

print(psutil.pids())                # 获取所有进程PID,以列表形式返回
p = psutil.Process(9236)            # 实例化一个对象,参数为一个进程ID
print(p.name())                     # 通过name属性可以得到这个进程的名称
print(p.exe())                      # 通过exe属性可以得到这个进程的路径
print(p.cwd())                      # 通过cwd属性可以进入工作目录绝对路径
print(p.status())                   # 通过status属性可以看到这个进程的状态
print(p.create_time())              # 通过create_time属性可以看到这个进程的创建时间,时间戳形式
print(p.uids())                     # 通过uids属性可以看到进程的uid信息
print(p.gids())                     # 通过gids属性可以看到进程的gid信息
print(p.cpu_times())                # 通过cpu_times可以看到user、system两个cpu的时间
print(p.cpu_affinity())             # 获取cpu亲和度,如果要设置亲和度,将cou号作为参数即可。
print(p.memory_percent())           # 通过memory_percent可以看到进程的内存利用率
print(p.memory_info())              # 通过memory_info可以看到进内存的rss、vms信息
print(p.io_counters())              # 通过io_counters可以看到进程的io信息
print(p.connections())              # 通过connections可以看到进程的socket连接数
print(p.num_threads())              # 通过num_threads可以看到进程开启的线程数

popenのクラス

popenの役割は、ユーザがプログラム実行状態の進行状況を追跡するために、アプリケーションのプロセス情報を始めるためにあります

from subprocess import PIPE
p = psutil.Popen(["python3 psutil_使用.py"],stdout=PIPE)
print(p.name())
print(p.username())
print(p.cpu_times)

システムハードウェア小さなスクリプトを見ます

#!/usr/bin/env python
#coding:utf-8

import psutil
import datetime
import time

# 当前时间
now_time = time.strftime('%Y-%m-%d-%H:%M:%S', time.localtime(time.time()))
print(now_time)

# 查看cpu物理个数的信息
print(u"物理CPU个数: %s" % psutil.cpu_count(logical=False))

#CPU的使用率
cpu = (str(psutil.cpu_percent(1))) + '%'
print(u"cup使用率: %s" % cpu)

#查看内存信息,剩余内存.free  总共.total
#round()函数方法为返回浮点数x的四舍五入值。

free = str(round(psutil.virtual_memory().free / (1024.0 * 1024.0 * 1024.0), 2))
total = str(round(psutil.virtual_memory().total / (1024.0 * 1024.0 * 1024.0), 2))
memory = int(psutil.virtual_memory().total - psutil.virtual_memory().free) / float(psutil.virtual_memory().total)
print(u"物理内存: %s G" % total)
print(u"剩余物理内存: %s G" % free)
print(u"物理内存使用率: %s %%" % int(memory * 100))
# 系统启动时间
print(u"系统启动时间: %s" % datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H:%M:%S"))

# 系统用户
users_count = len(psutil.users())
#
# >>> for u in psutil.users():
# ...   print(u)
# ...
# suser(name='root', terminal='pts/0', host='61.135.18.162', started=1505483904.0)
# suser(name='root', terminal='pts/5', host='61.135.18.162', started=1505469056.0)
# >>> u.name
# 'root'
# >>> u.terminal
# 'pts/5'
# >>> u.host
# '61.135.18.162'
# >>> u.started
# 1505469056.0
# >>>

users_list = ",".join([u.name for u in psutil.users()])
print(u"当前有%s个用户,分别是 %s" % (users_count, users_list))

#网卡,可以得到网卡属性,连接数,当前流量等信息
net = psutil.net_io_counters()
bytes_sent = '{0:.2f} Mb'.format(net.bytes_recv / 1024 / 1024)
bytes_rcvd = '{0:.2f} Mb'.format(net.bytes_sent / 1024 / 1024)
print(u"网卡接收流量 %s 网卡发送流量 %s" % (bytes_rcvd, bytes_sent))

io = psutil.disk_partitions()
# print(io)
# print("io[-1]为",io[-1])
#del io[-1]

print('-----------------------------磁盘信息---------------------------------------')

print("系统磁盘信息:" + str(io))

for i in io:
    o = psutil.disk_usage(i.device)
    print("总容量:" + str(int(o.total / (1024.0 * 1024.0 * 1024.0))) + "G")
    print("已用容量:" + str(int(o.used / (1024.0 * 1024.0 * 1024.0))) + "G")
    print("可用容量:" + str(int(o.free / (1024.0 * 1024.0 * 1024.0))) + "G")

print('-----------------------------进程信息-------------------------------------')
# 查看系统全部进程
for pnum in psutil.pids():
    p = psutil.Process(pnum)
    print(u"进程名 %-20s  内存利用率 %-18s 进程状态 %-10s 创建时间 %-10s " \
    % (p.name(), p.memory_percent(), p.status(), p.create_time()))

硬件信息脚本

おすすめ

転載: www.cnblogs.com/qinyujie/p/11708355.html