使用 Python 获取总物理内存
- 2024-10-29 08:35:00
- admin 原创
- 51
问题描述:
如何以与分布无关的方式获取 Python 中的总物理内存?我不需要已用内存,只需要总物理内存。
解决方案 1:
跨平台解决方案的最佳选择是使用psutil包(可在PyPI上获得)。
import psutil
psutil.virtual_memory().total # total physical memory in Bytes
文档virtual_memory
在这里。
解决方案 2:
在Linux上使用 :os.sysconf
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
笔记:
SC_PAGE_SIZE
通常为 4096。SC_PAGESIZE
且SC_PAGE_SIZE
相等。欲了解更多信息,请参阅
man sysconf
。对于MacOS,根据用户报告,它适用于 Python 3.7,但不适用于 Python 3.8。
在Linux上使用/proc/meminfo
:
meminfo = dict((i.split()[0].rstrip(':'),int(i.split()[1])) for i in open('/proc/meminfo').readlines())
mem_kib = meminfo['MemTotal'] # e.g. 3921852
解决方案 3:
正则表达式对于这种事情很有效,并且可能有助于解决不同分布之间的任何细微差异。
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])
解决方案 4:
这段代码在 Python 2.7.9 上无需任何外部库就可以运行
import os
mem=str(os.popen('free -t -m').readlines())
"""
Get a whole line of memory output, it will be something like below
[' total used free shared buffers cached
',
'Mem: 925 591 334 14 30 355
',
'-/+ buffers/cache: 205 719
',
'Swap: 99 0 99
',
'Total: 1025 591 434
']
So, we need total memory, usage and free memory.
We should find the index of capital T which is unique at this string
"""
T_ind=mem.index('T')
"""
Than, we can recreate the string with this information. After T we have,
"Total: " which has 14 characters, so we can start from index of T +14
and last 4 characters are also not necessary.
We can create a new sub-string using this information
"""
mem_G=mem[T_ind+14:-4]
"""
The result will be like
1025 603 422
we need to find first index of the first space, and we can start our substring
from from 0 to this index number, this will give us the string of total memory
"""
S1_ind=mem_G.index(' ')
mem_T=mem_G[0:S1_ind]
print 'Summary = ' + mem_G
print 'Total Memory = ' + mem_T +' MB'
我们可以轻松获得已用内存和可用内存
"""
Similarly we will create a new sub-string, which will start at the second value.
The resulting string will be like
603 422
Again, we should find the index of first space and than the
take the Used Memory and Free memory.
"""
mem_G1=mem_G[S1_ind+8:]
S2_ind=mem_G1.index(' ')
mem_U=mem_G1[0:S2_ind]
mem_F=mem_G1[S2_ind+8:]
print 'Used Memory = ' + mem_U +' MB'
print 'Free Memory = ' + mem_F +' MB'
相关推荐
热门文章
项目管理软件有哪些?
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件
热门标签
云禅道AD