get_cpu_mem.py 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. # -*- coding: utf-8 -*-
  2. # @Author: wangkun
  3. # @Time: 2023/7/19
  4. import socket
  5. import psutil
  6. class GetCpuMen:
  7. @classmethod
  8. def get_ip_address(cls):
  9. try:
  10. # 创建一个 UDP 套接字
  11. sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  12. # 连接到一个外部 IP 地址
  13. sock.connect(("8.8.8.8", 80))
  14. # 获取本地 IP 地址
  15. local_ip = sock.getsockname()[0]
  16. return local_ip
  17. except socket.error:
  18. return "无法获取本机 IP 地址"
  19. @classmethod
  20. def get_pid(cls, script):
  21. # 遍历所有正在运行的进程
  22. for proc in psutil.process_iter():
  23. try:
  24. # 获取进程的命令行参数
  25. cmds = proc.cmdline()
  26. # 检查命令行参数是否包含爬虫脚本的名称或关键字
  27. for cmd in cmds:
  28. if script in cmd:
  29. print(f"cmd:{cmd}")
  30. # 获取进程的PID
  31. pid = proc.pid
  32. return pid
  33. except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
  34. pass
  35. @classmethod
  36. def get_cpu_mem(cls, script):
  37. import psutil
  38. # 获取当前进程的PID
  39. pid = cls.get_pid(script)
  40. print(f"pid:{pid}")
  41. # 获取CPU的使用情况
  42. cpu_percent = round(psutil.Process(pid).cpu_percent(), 2)
  43. # 获取内存的使用情况
  44. memory_percent = round(psutil.Process(pid).memory_percent(), 2)
  45. print(f"CPU使用率:{cpu_percent}")
  46. print(f"内存使用率:{memory_percent}")
  47. @classmethod
  48. def get_all_cpu_mem(cls):
  49. script_list = ["run_xg_search",
  50. "run_xg_author",
  51. "run_xng_author",
  52. "run_xng_play",
  53. "run_xng_hour",
  54. "run_dy_author",
  55. "run_dy_recommend",
  56. "run_ks_recommend",
  57. "run_ks_author",
  58. "run_bszf_recommend",
  59. "run_ssnnyfq_recommend",
  60. "run_gzh_author",
  61. "run_weixinzhishu_score",
  62. "get_cpu_mem"]
  63. for scrip in script_list:
  64. print(f"scrip:{scrip}")
  65. cls.get_cpu_mem(scrip)
  66. print("\n")
  67. if __name__ == "__main__":
  68. # GetCpuMen.get_cpu_mem("get_cpu_mem")
  69. # GetCpuMen.get_all_cpu_mem()
  70. print(GetCpuMen.get_ip_address())
  71. pass