<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          用Python實現(xiàn)手機實時監(jiān)控電腦資源

          共 4631字,需瀏覽 10分鐘

           ·

          2022-03-08 17:19

          點擊關(guān)注“Python數(shù)據(jù)分析實例

          設(shè)為“置頂或星標(biāo)”,送達干貨不錯過!

          大家好,我是Brook!


          今日主題:如何通過手機遠程查看電腦應(yīng)用資源消耗情況


          有時候我們想查看電腦進程列表,實時掌握電腦或服務(wù)器資源消耗情況,或某指定應(yīng)用資源消耗情況,最快速的方法就是通過Web框架開發(fā)部署可訪問的網(wǎng)站


          如何開發(fā)手機查看電腦系統(tǒng)應(yīng)用資源?

          1、系統(tǒng)信息監(jiān)控psutil模塊,獲取監(jiān)控應(yīng)用指標(biāo)(這里主要包括進程pid、應(yīng)用名稱name、內(nèi)存信息memory_info等,具體其他參數(shù)獲取可查看文檔手冊,生成data.json數(shù)據(jù)供后續(xù)網(wǎng)頁模板用。

          2、利用Flask生成展示網(wǎng)頁,首先準(zhǔn)備展示模板template.html,加載數(shù)據(jù)映射到對應(yīng)的模板中輸出展示網(wǎng)頁。


          創(chuàng)建項目目錄

          1)、創(chuàng)建目錄
          mkdir myProjectfile (linux、window通用,當(dāng)然也可以手動建一個文件夾命名)
          2)進入目錄
          cd myProjectfile (也可以直接打開建立的文件夾路徑cmd命令進入)
          3)配置虛擬環(huán)境路徑
          linux: export PIPENV_VENV_IN_PROJECT=1
          window: set PIPENV_VENV_IN_PROJECT=1 (注意項目不能在C盤,如果此處沒有設(shè)置,默認虛擬環(huán)境路徑在C盤下)
          4)創(chuàng)建虛擬環(huán)境
          pipenv install 
          5)激化環(huán)境
          pipenv shell
          6)安裝需要的包
          pipenv install flask/psutil


          一、獲取待展示的系統(tǒng)信息

          使用psutil.process_iter獲取進程相關(guān)信息,返回結(jié)果是一個可迭代對象,每個元素的info是一個字典,通過字典鍵值對獲取我們關(guān)注的信息。如CPU占用、內(nèi)存占用(rss就是實際占用的內(nèi)存)、進程線程數(shù)等

          # 獲取系統(tǒng)進程信息
          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')

                  # 當(dāng)前進程的內(nèi)存使用
                  memory = psutil.Process(pid1).memory_info().rss / 1024 / 1024
                  # 設(shè)置過濾條件,查看指定應(yīng)用
                  # 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


          二、編寫業(yè)務(wù)視圖函數(shù)

          1、數(shù)據(jù)準(zhǔn)備---根據(jù)業(yè)務(wù)特點加載所需表數(shù)據(jù)
          2、網(wǎng)頁輸出
          當(dāng)然設(shè)置一下定時程序定時調(diào)用以上find_procs函數(shù),更新系統(tǒng)資源消耗實時情況
          #route裝飾器創(chuàng)建路由
          @app.route('/')
          def Show_html(): #訪問路由時執(zhí)行的視圖函數(shù)
              find_procs()
              with open("data.json") as f:
                  data = json.loads(f.read())
                  print(data) #加載json數(shù)據(jù)
              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>"

              #打開模板 ---復(fù)制bootstrap的代碼,是通過遠程方式加載出來的
              with open("template.html",encoding='UTF-8') as t:
                  template = string.Template(t.read())

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

              return output_html


          最后運行主函數(shù)

          from flask import Flask
          import psutil
          import json
          import string
          app = Flask(__name__) #創(chuàng)建應(yīng)用實例

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

          復(fù)制本機網(wǎng)址發(fā)送到手機微信,即可快速訪問查看,這里未將應(yīng)用部署上線,手機查看前提是連到同一個局域網(wǎng),簡單可連接同一網(wǎng)絡(luò)路由器wifi。


          不看不知道,啟用了快百個應(yīng)用,難怪我電腦這么卡


          監(jiān)控指定應(yīng)用


          當(dāng)然應(yīng)用場景不限于查看系統(tǒng)信息資源列表,進一步可對系統(tǒng)應(yīng)用、網(wǎng)絡(luò)資源可視化進行查看,相關(guān)應(yīng)用可自行拓展比如通過手機端控制電腦程序的開啟關(guān)閉即殺掉相關(guān)進程。


          后臺回復(fù):【手機監(jiān)控】獲取完整代碼

          瀏覽 139
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产女人18毛片水真多果冻 | 国产美女一级毛片真精品酒店 | 韩国三级影音先锋 | 国产 丝袜 人妻 制服 一区 | 91精品久久久久久久久久 |