nejlepším řešením pro řešení napříč platformami je použití balíčku psutil (dostupný na PyPI).
import psutil
psutil.virtual_memory().total # total physical memory in Bytes
Dokumentace pro virtual_memory
je tady.
Pomocí os.sysconf
v systému Linux:
import os
mem_bytes = os.sysconf('SC_PAGE_SIZE') * os.sysconf('SC_PHYS_PAGES') # e.g. 4015976448
mem_gib = mem_bytes/(1024.**3) # e.g. 3.74
Poznámka:
SC_PAGE_SIZE
je často 4096.SC_PAGESIZE
aSC_PAGE_SIZE
jsou si rovni.- Další informace naleznete v části
man sysconf
. - Pro MacOS , podle zpráv uživatelů to funguje s Pythonem 3.7, ale ne s Pythonem 3.8.
Pomocí /proc/meminfo
v systému Linux:
meminfo = dict((i.split()[0].rstrip(':'),int(i.split()[1])) for i in open('/proc/meminfo').readlines())
mem_kib = meminfo['MemTotal'] # e.g. 3921852
Regulární výrazy pro tento druh věcí dobře fungují a mohou pomoci s malými rozdíly mezi distribucemi.
import re
with open('/proc/meminfo') as f:
meminfo = f.read()
matched = re.search(r'^MemTotal:\s+(\d+)', meminfo)
if matched:
mem_total_kB = int(matched.groups()[0])
Správný způsob, jak získat skupiny uživatelů v linuxu pomocí C
Jak zachovat konce řádků při ukládání výstupu příkazu do proměnné?