Get memory usage of computer in Windows with Python

前端 未结 3 809
臣服心动
臣服心动 2020-12-30 06:48

How can I tell what the computer\'s overall memory usage is from Python, running on Windows XP?

相关标签:
3条回答
  • 2020-12-30 07:04

    You'll want to use the wmi module. Something like this:

    import wmi
    comp = wmi.WMI()
    
    for i in comp.Win32_ComputerSystem():
       print i.TotalPhysicalMemory, "bytes of physical memory"
    
    for os in comp.Win32_OperatingSystem():
       print os.FreePhysicalMemory, "bytes of available memory"
    
    0 讨论(0)
  • 2020-12-30 07:06

    You can also just call GlobalMemoryStatusEx() (or any other kernel32 or user32 export) directly from python:

    import ctypes
    
    class MEMORYSTATUSEX(ctypes.Structure):
        _fields_ = [
            ("dwLength", ctypes.c_ulong),
            ("dwMemoryLoad", ctypes.c_ulong),
            ("ullTotalPhys", ctypes.c_ulonglong),
            ("ullAvailPhys", ctypes.c_ulonglong),
            ("ullTotalPageFile", ctypes.c_ulonglong),
            ("ullAvailPageFile", ctypes.c_ulonglong),
            ("ullTotalVirtual", ctypes.c_ulonglong),
            ("ullAvailVirtual", ctypes.c_ulonglong),
            ("sullAvailExtendedVirtual", ctypes.c_ulonglong),
        ]
    
        def __init__(self):
            # have to initialize this to the size of MEMORYSTATUSEX
            self.dwLength = ctypes.sizeof(self)
            super(MEMORYSTATUSEX, self).__init__()
    
    stat = MEMORYSTATUSEX()
    ctypes.windll.kernel32.GlobalMemoryStatusEx(ctypes.byref(stat))
    
    print("MemoryLoad: %d%%" % (stat.dwMemoryLoad))
    

    Not necessarily as useful as WMI in this case, but definitely a nice trick to have in your back pocket.

    0 讨论(0)
  • 2020-12-30 07:16

    You can query the performance counters in WMI. I've done something similar but with disk space instead.

    A very useful link is the Python WMI Tutorial by Tim Golden.

    0 讨论(0)
提交回复
热议问题