python 监测服务器的cpu和内存占用率,单进程的内存和cpu占用率

#coding=utf-8
import time
import psutil
import pymysql
# 先安装两个包psutilpymysql
# mysql创建数据库test1,然后创建table
# sql = "create table memory_and_cpu(cpu_lv varchar(100),memory_lv varchar(100),pro_cpu_lv varchar(100), pro_memory_lv varchar(100));"
def useagent(pid_list):
    cpu_list = []
    memory_list = []
    pro_cpu_list = []
    pro_memory_list = []

    try:
        while True:
            time.sleep(1)
            cpu_lv = psutil.cpu_percent()
            cpu_list.append(cpu_lv)
            # print "当前cpu利用率:\033[1;31;42m%s%%\033[0m" % cpu_lv
            print "当前服务器cpu利用率%.2f%%" % cpu_lv
            memory = psutil.virtual_memory()
            # print memory.used
            # print memory.total
            memory_lv = float(memory.used) / float(memory.total) * 100
            memory_list.append(memory_lv)
            print "当前服务器内存利用率%.2f%%" % memory_lv
            # pro = psutil.pids()
            # # print(pro)

            pro_cpu_lv = get_cpu_percent(pid_list)
            print "当前进程cpu利用率%.2f%%" % pro_cpu_lv[0]
            pro_cpu_list.append(pro_cpu_lv)
            p = psutil.Process(pid_list[0])
            pro_memory_lv = p.memory_percent()
            print "当前进程内存利用率%.2f%%" % pro_memory_lv
            pro_memory_list.append(pro_memory_lv)
            # 执行sql语句把数据存到数据库
            sql = "insert into memory_and_cpu values('%s','%s','%s','%s')" % (cpu_lv, memory_lv, pro_cpu_lv, pro_memory_lv)
            db = connectDB()
            sqlDML(sql, db)
    except:
        print("连接服务器异常")
        print cpu_list
        print memory_list
        print pro_cpu_list
        print pro_memory_list

def get_cpu_percent(pid_list, interval=0.5):
    processes = [psutil.Process(pid=i) for i in pid_list]
    for p in processes:
        p.cpu_percent(interval=None)
        time.sleep(interval)
        percents = [p.cpu_percent(interval=None) for p in processes]
        print(type(percents))
        return percents

def connectDB(dbname='test12'):
    if dbname == 'test12':
        db = pymysql.connect("localhost", "root", "123", "test12")
        return db

def sqlDML(sql, db):
    cr = db.cursor()
    cr.execute(sql)
    db.commit()
    cr.close()

if __name__ == '__main__':
    useagent([24450])

猜你喜欢

转载自blog.csdn.net/weixin_41896508/article/details/80838384