Available System Memory

Thomas Heller theller at python.net
Thu Nov 6 15:13:20 EST 2003


"rtheiss" <rtheiss at yahoo.com> writes:

> Hi Folks,
>
> This is hopefully an easy question. I would like to be able to check 
> available system memory on a WinXP machine from within python.  I've 
> checked the docs in the win32 modules, read the Python Cookbook, and 
> tried the Python Essential Reference. 
>
> No luck. 
>
> Any ideas?
>
> Many Thanks.
>
> Bob
>
> P.S.  using v2.2
>  
Here is a simple script which calls the GlobalMemoryStatus function:

-----
from ctypes import *
from ctypes.wintypes import DWORD

SIZE_T = c_ulong

class _MEMORYSTATUS(Structure):
    _fields_ = [("dwLength", DWORD),
                ("dwMemoryLength", DWORD),
                ("dwTotalPhys", SIZE_T),
                ("dwAvailPhys", SIZE_T),
                ("dwTotalPageFile", SIZE_T),
                ("dwAvailPageFile", SIZE_T),
                ("dwTotalVirtual", SIZE_T),
                ("dwAvailVirtualPhys", SIZE_T)]
    def show(self):
        for field_name, field_type in self._fields_:
            print field_name, getattr(self, field_name)

memstatus = _MEMORYSTATUS()
windll.kernel32.GlobalMemoryStatus(byref(memstatus))
memstatus.show()
-----

On my machine, it prints this:

dwLength 32
dwMemoryLength 63
dwTotalPhys 535609344
dwAvailPhys 198139904
dwTotalPageFile 907055104
dwAvailPageFile 642375680
dwTotalVirtual 2147352576
dwAvailVirtualPhys 2117771264

See the MSDN docs for GlobalMemoryStatus to learn what the fields mean,
and <http://starship.python.net/crew/theller/ctypes> for the ctypes
module.

Thomas




More information about the Python-list mailing list