源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

使用Python获取CPU、内存和硬盘等windowns系统信息的2个例子

  • 时间:2021-08-14 02:10 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:使用Python获取CPU、内存和硬盘等windowns系统信息的2个例子
[b]例子一:[/b] Python用WMI模块获取windowns系统的硬件信息:硬盘分区、使用情况,内存大小,CPU型号,当前运行的进程,自启动程序及位置,系统的版本等信息。
[u]复制代码[/u] 代码如下:
#!/usr/bin/env python # -*- coding: utf-8 -*- import wmi import os import sys import platform import time def sys_version():      c = wmi.WMI ()     #获取操作系统版本     for sys in c.Win32_OperatingSystem():         print "Version:%s" % sys.Caption.encode("UTF8"),"Vernum:%s" % sys.BuildNumber         print  sys.OSArchitecture.encode("UTF8")#系统是32位还是64位的         print sys.NumberOfProcesses #当前系统运行的进程总数 def cpu_mem():     c = wmi.WMI ()            #CPU类型和内存     for processor in c.Win32_Processor():         #print "Processor ID: %s" % processor.DeviceID         print "Process Name: %s" % processor.Name.strip()     for Memory in c.Win32_PhysicalMemory():         print "Memory Capacity: %.fMB" %(int(Memory.Capacity)/1048576) def cpu_use():     #5s取一次CPU的使用率     c = wmi.WMI()     while True:         for cpu in c.Win32_Processor():              timestamp = time.strftime('%a, %d %b %Y %H:%M:%S', time.localtime())              print '%s | Utilization: %s: %d %%' % (timestamp, cpu.DeviceID, cpu.LoadPercentage)              time.sleep(5)     def disk():     c = wmi.WMI ()        #获取硬盘分区     for physical_disk in c.Win32_DiskDrive ():         for partition in physical_disk.associators ("Win32_DiskDriveToDiskPartition"):             for logical_disk in partition.associators ("Win32_LogicalDiskToPartition"):                 print physical_disk.Caption.encode("UTF8"), partition.Caption.encode("UTF8"), logical_disk.Caption     #获取硬盘使用百分情况     for disk in c.Win32_LogicalDisk (DriveType=3):         print disk.Caption, "%0.2f%% free" % (100.0 * long (disk.FreeSpace) / long (disk.Size)) def network():     c = wmi.WMI ()         #获取MAC和IP地址     for interface in c.Win32_NetworkAdapterConfiguration (IPEnabled=1):         print "MAC: %s" % interface.MACAddress     for ip_address in interface.IPAddress:         print "ip_add: %s" % ip_address     print     #获取自启动程序的位置     for s in c.Win32_StartupCommand ():         print "[%s] %s <%s>" % (s.Location.encode("UTF8"), s.Caption.encode("UTF8"), s.Command.encode("UTF8"))           #获取当前运行的进程     for process in c.Win32_Process ():         print process.ProcessId, process.Name def main():     sys_version()     #cpu_mem()     #disk()     #network()     #cpu_use() if __name__ == '__main__':     main()     print platform.system()     print platform.release()     print platform.version()     print platform.platform()     print platform.machine()
[b]例子二:[/b] 由于我用到的不多,所以只获取的CPU、内存和硬盘,如果需要其它资源,请参照msdn。
[u]复制代码[/u] 代码如下:
import os import win32api import win32con import wmi import time def getSysInfo(wmiService = None):     result = {}     if wmiService == None:         wmiService = wmi.WMI()     # cpu     for cpu in wmiService.Win32_Processor():         timestamp = time.strftime('%a, %d %b %Y %H:%M:%S', time.localtime())         result['cpuPercent'] = cpu.loadPercentage     # memory     cs = wmiService.Win32_ComputerSystem()     os = wmiService.Win32_OperatingSystem()     result['memTotal'] = int(int(cs[0].TotalPhysicalMemory)/1024/1024)     result['memFree'] = int(int(os[0].FreePhysicalMemory)/1024)     #disk     result['diskTotal'] = 0     result['diskFree'] = 0     for disk in wmiService.Win32_LogicalDisk(DriveType=3):         result['diskTotal'] += int(disk.Size)         result['diskFree'] += int(disk.FreeSpace)     result['diskTotal'] = int(result['diskTotal']/1024/1024)     result['diskFree'] = int(result['diskFree']/1024/1024)     return result if __name__ == '__main__':     wmiService = wmi.WMI()     while True:         print getSysInfo(wmiService)         time.sleep(3)
采用的wmi模块获取的,由于wmi初始化时占用系统资源太高,所以如果需要循环获取,请在循环体外面把wmi对象初始化好,然后传入函数里面,这样就不会产生CPU资源过高的情况。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部