用Python实现手机实时监控电脑资源

2022-04-08 12:46:32 浏览数 (1)

大家好,我是Brook!

今日主题:如何通过手机远程查看电脑应用资源消耗情况

有时候我们想查看电脑进程列表,实时掌握电脑或服务器资源消耗情况,或某指定应用资源消耗情况,最快速的方法就是通过Web框架开发部署可访问的网站。

如何开发手机查看电脑系统应用资源?

1、系统信息监控psutil模块,获取监控应用指标(这里主要包括进程pid、应用名称name、内存信息memory_info等,具体其他参数获取可查看文档手册。),生成data.json数据供后续网页模板用。

2、利用Flask生成展示网页,首先准备展示模板template.html,加载数据映射到对应的模板中输出展示网页。

创建项目目录

代码语言:javascript复制
1)、创建目录
mkdir myProjectfile (linux、window通用,当然也可以手动建一个文件夹命名)
2)进入目录
cd myProjectfile (也可以直接打开建立的文件夹路径cmd命令进入)
3)配置虚拟环境路径
linux: export PIPENV_VENV_IN_PROJECT=1
window: set PIPENV_VENV_IN_PROJECT=1 (注意项目不能在C盘,如果此处没有设置,默认虚拟环境路径在C盘下)
4)创建虚拟环境
pipenv install 
5)激化环境
pipenv shell
6)安装需要的包
pipenv install flask/psutil

一、获取待展示的系统信息

使用psutil.process_iter获取进程相关信息,返回结果是一个可迭代对象,每个元素的info是一个字典,通过字典键值对获取我们关注的信息。如CPU占用、内存占用(rss就是实际占用的内存)、进程线程数等

代码语言:javascript复制
# 获取系统进程信息
def find_procs():
    dic={}
    for proc in psutil.process_iter(attrs=['memory_info','name','pid']):

        pinfo = proc.as_dict(attrs=['name', 'memory_info'])

        pid1 = proc.info.get('pid')

        # 当前进程的内存使用
        memory = psutil.Process(pid1).memory_info().rss / 1024 / 1024
        # 设置过滤条件,查看指定应用
        # if proc.info['name'].startswith('WeChat'):
        if pinfo.get("name").startswith('WeChat') and memory > 20:
            pinfo['memory_info'] = str(round(memory,1))  'MB'
            print(pinfo)
            k = pinfo.get("name")
            v = pinfo.get("memory_info")
            dic[k] = v
    js=json.dumps(dic)
    file = open(r'data.json', 'w')
    file.write(js)
    file.close()
    print(dic)
    return   dic

二、编写业务视图函数

1、数据准备---根据业务特点加载所需表数据

2、网页输出

当然设置一下定时程序定时调用以上find_procs函数,更新系统资源消耗实时情况

代码语言:javascript复制
#route装饰器创建路由
@app.route('/')
def Show_html(): #访问路由时执行的视图函数
    find_procs()
    with open("data.json") as f:
        data = json.loads(f.read())
        print(data)  #加载json数据
    content = ""
    for i, (name,memory_info) in enumerate(data.items()):
        content  = "<tr>"
        content  = f"<td>{i   1}</td>"
        content  = f"<td>{name}</td>"
        content  = f"<td>{memory_info}</td>"
        content  = "</tr>"

    #打开模板 ---复制bootstrap的代码,是通过远程方式加载出来的
    with open("template.html",encoding='UTF-8') as t:
        template = string.Template(t.read())

    #生成网页
    output_html = template.substitute(elements=content)
    with open("report.html", "w",encoding='UTF-8') as output:
        output.write(output_html)

    return output_html

最后运行主函数

代码语言:javascript复制
from flask import Flask
import psutil
import json
import string
app = Flask(__name__) #创建应用实例

if __name__=="__main__":
    app.run(host="0.0.0.0",port=8888)

复制本机网址发送到手机微信,即可快速访问查看,这里未将应用部署上线,手机查看前提是连到同一个局域网,简单可连接同一网络路由器wifi。

不看不知道,启用了快百个应用,难怪我电脑这么卡

监控指定应用

当然应用场景不限于查看系统信息资源列表,进一步可对系统应用、网络资源可视化进行查看,相关应用可自行拓展比如通过手机端控制电脑程序的开启关闭即杀掉相关进程。

0 人点赞