C++/Python/MATLAB检查内存使用情况

有时为了对电脑、服务器做运行情况监控,需要获取内存、cpu的使用情况。当处理CT图像数据的时候,由于需要内存较大,因此容易出现内存不足的问题,对此,在处理数据之前预先检查剩余内存是否充足很有必要。以下分别是三种编程语言下的内存检查代码。

C++检查可用内存:

#include <windows.h>
#include <iostream>
#include <iomanip>

using namespace std;

int main() {
    MEMORYSTATUSEX memInfo;
    memInfo.dwLength = sizeof(MEMORYSTATUSEX);
    GlobalMemoryStatusEx(&memInfo);

    cout << "Total memory: " << memInfo.ullTotalPhys / 1024 / 1024 << " MB" << endl;
    cout << "Available memory: " << memInfo.ullAvailPhys / 1024 / 1024 << " MB" << endl;
    cout << "Memory load: " << memInfo.dwMemoryLoad << "%" << endl;

    return 0;
}

python检查可用内存:

# 先下载psutil库:pip install psutil
# 下载地址  https://pypi.org/project/psutil/5.6.2/
import psutil

def getMemCpu():
    data = psutil.virtual_memory()
    total = data.total  # 总内存,单位为byte
    print('total',total)
    free = data.available  # 可用内存
    print('free',free)
 
    memory = "Memory usage:%d" % (int(round(data.percent))) + "%" + " "  # 内存使用情况
    print('memory',memory)
    cpu = "CPU:%0.2f" % psutil.cpu_percent(interval=1) + "%"  # CPU占用情况
    print('cpu',cpu)
 
 
 
if __name__ == "__main__":
    getMemCpu()

MATLAB检查可用内存:

%% 检查内存是否足够
system_dependent memstats
[userview, systemview] = memory;
available_size = systemview.PhysicalMemory.Available;  %bytes
if strcmpi(params.precision, 'single')
    need_size = counts*w*h*4;
end
if strcmpi(params.precision, 'double')
    need_size = counts*w*h*8;
end
need_size = need_size*2/1024/1024 + 1600;  %1600M为MATLAB活动时占用的内存
available_size = available_size/1024/1024;
final_size = (available_size - need_size);
fprintf('运行程序预计需要的内存大小:%f M\n', need_size);
fprintf('运行程序后预计剩余的内存大小:%f M\n', final_size);
if final_size < 1024
    warning('剩余内存较小')
end
if need_size/available_size > 0.95
    error('内存空间不足');
end

参考文献:
[1] python内存检查

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值