Получить использование памяти компьютера в Windows с Python

Вероятно, самый простой способ - создать временный сценарий оболочки, например

$ echo "~/my_executable arg1 arg2" > /tmp/tmp.sh ; chmod +x /tmp/tmp.sh ; open -a Terminal /tmp/tmp.sh ; rm /tmp/tmp.sh
13
задан Claudiu 7 January 2010 в 11:09
поделиться

3 ответа

Вы захотите использовать модуль wmi . Что-то вроде этого:

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"
11
ответ дан 1 December 2019 в 20:00
поделиться

Вы можете запросить счетчики производительности в WMI. Я сделал кое-что похожее, но с дисковым пространством вместо этого.

Очень полезная ссылка - Python WMI Tutorial by Tim Golden.

.
0
ответ дан 1 December 2019 в 20:00
поделиться

Вы также можете просто вызвать GlobalMemoryStatusEx() (или любой другой экспорт из ядра 32 или user32) прямо из 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))

Не обязательно так полезно, как WMI в этом случае, но определённо хороший трюк, чтобы иметь его в заднем кармане.

21
ответ дан 1 December 2019 в 20:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: