首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在python中通过变量释放内存使用情况

在python中通过变量释放内存使用情况
EN

Stack Overflow用户
提问于 2017-04-11 14:27:03
回答 1查看 186关注 0票数 0

我目前正在尝试将一些数据存储到.h5文件中,我很快意识到这可能需要将我的数据存储到各个部分中,因为它不可能在我的ram中处理它。我一开始使用numpy.array来压缩内存使用,但这导致我花了几天时间来格式化数据。

所以我又回到了使用list,但让程序监控内存使用情况,当它超过一个指定值时,是否会以numpy格式存储一个部分-这样另一个进程就可以加载并使用它。这样做的问题是,我认为会释放内存的并不是释放内存。由于某些原因,内存是相同的,即使我重置了变量和del变量。为什么内存没有在这里释放?

代码语言:javascript
运行
AI代码解释
复制
import numpy as np
import os
import resource
import sys
import gc
import math
import h5py
import SecureString
import objgraph
from numpy.lib.stride_tricks import as_strided as ast

total_frames = 15
total_frames_with_deltas = total_frames*3
dim = 40
window_height = 5


def store_file(file_name,data):
    with h5py.File(file_name,'w') as f:
        f["train_input"] = np.concatenate(data,axis=1)

def load_data_overlap(saved):
    #os.chdir(numpy_train)
    print "Inside function!..."
    if saved == False:
        train_files = np.random.randint(255,size=(1,40,690,4))
        train_input_data_interweawed_normalized = []
        print "Storing train pic to numpy"
        part = 0
        for i in xrange(100000):
            print resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
            if resource.getrusage(resource.RUSAGE_SELF).ru_maxrss > 2298842112/10:
                print "Max ram storing part: " + str(part) + " At entry: " + str(i)
                print "Storing Train input"
                file_name = 'train_input_'+'part_'+str(part)+'_'+str(dim)+'_'+str(total_frames_with_deltas)+'_window_height_'+str(window_height)+'.h5'
                store_file(file_name,train_input_data_interweawed_normalized)
                part = part + 1             
                del train_input_data_interweawed_normalized
                gc.collect()
                train_input_data_interweawed_normalized = []
                raw_input("something")
            for plot in train_files:
                overlaps_reshaped = np.random.randint(10,size=(45,200,5,3))
                for ind_plot in overlaps_reshaped.reshape(overlaps_reshaped.shape[1],overlaps_reshaped.shape[0],overlaps_reshaped.shape[2],overlaps_reshaped.shape[3]): 
                    ind_plot_reshaped = ind_plot.reshape(ind_plot.shape[0],1,ind_plot.shape[1],ind_plot.shape[2])
                    train_input_data_interweawed_normalized.append(ind_plot_reshaped)
    print len(train_input_data_interweawed_normalized)

    return train_input_data_interweawed_normalized_print
#------------------------------------------------------------------------------------------------------------------------------------------------------------

saved = False
train_input = load_data_overlap(saved)

输出:

代码语言:javascript
运行
AI代码解释
复制
.....
223662080
224772096
225882112
226996224
228106240
229216256
230326272
Max ram storing part: 0 At entry: 135
Storing Train input
something
377118720
Max ram storing part: 1 At entry: 136
Storing Train input
something
377118720
Max ram storing part: 2 At entry: 137
Storing Train input
something
EN

回答 1

Stack Overflow用户

发布于 2017-04-11 16:19:19

您需要显式强制执行垃圾收集,请参见here

根据Python官方文档,您可以使用gc.collect()

强制垃圾回收器释放未引用的内存

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43348801

复制
相关文章
Three TextureLoader纹理贴图不显示图片(显示黑色)的原因分析
问题在MeshLambertMaterial材质,把它改成MeshBasicMaterial即可显示图片。
Dawnzhang
2022/09/29
3.8K0
Metal Shading Language - 语法小结Metal Shading Language - 语法小结
纹理类型是一个句柄,指向一个一维/二维/三维的纹理数据;相当于OpenGL中的textureBufferID.
用户8893176
2021/08/09
1.1K0
Metal Shading Language - 语法小结Metal Shading Language - 语法小结
OpenGL学习笔记(二)——渲染管线&着色语言
导语 :渲染管线(渲染流水线),一般由显示芯片(GPU)内部处理图形信号的并行处理单元组成。这些并行处理单元两两之间相互独立。不同的型号硬件上独立处理单元的数量有很大差异。 与CPU串行执行不同,渲染
MelonTeam
2018/01/04
2.1K0
OpenGL学习笔记(二)——渲染管线&着色语言
Shader-基础纹理-遮罩纹理
遮罩纹理(mask texture)控制光照的强度,获得更加细腻的效果,通过遮罩纹理控制光照。在制作地形材质的时候混合多张图片,遮罩纹理控制如何混合这些纹理。 通过采样得到的纹素值与某种表面属性相乘,来更加精准的控制模型表面的各种属性。 在代码中添加了BumpMap来进行凹凸纹理效果,通过SpecularMask实现控制高光的光照
祝你万事顺利
2019/05/28
1.2K0
Shader-基础纹理-渐变纹理
一种基于冷暖色调的着色技术,通过渐变纹理控制漫反射光照。核心部分来说用过使用halfLambert构建一个纹理坐标,用这个纹理坐标来对渐变纹理进行采样。
祝你万事顺利
2019/05/28
1.2K0
不联网不插U盘就安全了?黑客能用声波攻击你的硬盘
《不联网不插U盘就安全了?黑客能用声波攻击你的硬盘》文章摘要:研究人员发现了一种利用声波攻击硬盘的方法,可以导致硬盘损坏和数据丢失。攻击者可以利用声波干扰机械硬盘的正常工作模式,使其产生暂时或者永久拒绝服务状态,从而阻止数据被访问。这种攻击方式需要物理接触硬盘,因此可以通过远离硬盘来避免受到攻击。研究人员建议使用加密等方法保护硬盘中的数据。
企鹅号小编
2018/01/04
1.9K0
不联网不插U盘就安全了?黑客能用声波攻击你的硬盘
WebGL2系列之采样器对象
如果我们希望从同一个图片多次读取像素信息,但是每次读取的时候使用的过滤方式不一样, 此时我们需要创建两个不同的纹理对象。
用户3158888
2019/09/09
7600
Direct3D 11 Tutorial 7:Texture Mapping and Constant Buffers_Direct3D 11 教程7:纹理映射和常量缓冲区
在上一个教程中,我们为项目引入了照明。 现在我们将通过向我们的立方体添加纹理来构建它。 此外,我们将介绍常量缓冲区的概念,并解释如何使用缓冲区通过最小化带宽使用来加速处理。
Zoctopus
2018/12/06
6080
纹理压缩
本文介绍了纹理压缩的基本概念、原理、常用压缩方式、压缩工具及相关技术标准,旨在帮助读者了解纹理压缩的基本知识,从而更好地进行纹理压缩相关的实践。
MelonTeam
2018/01/04
1.6K0
纹理压缩
12.QT-通过QOpenGLWidget显示YUV画面,通过QOpenGLTexture纹理渲染YUV
在上章11.QT-ffmpeg+QAudioOutput实现音频播放器,我们学习了如何播放音频,接下来我们便来学习如何通过opengl来显示YUV画面
诺谦
2020/11/04
3.9K0
12.QT-通过QOpenGLWidget显示YUV画面,通过QOpenGLTexture纹理渲染YUV
Pytorch的数据采样器
class torch.utils.data.Sampler(data_source)[source]
狼啸风云
2020/06/10
2K0
文字转语音,1行Python代码搞定,不联网也能用
开源项目:python-office的功能一直在更新中,今天给大家发布一个新功能:文字转语音。
程序员晚枫
2023/09/06
5220
文字转语音,1行Python代码搞定,不联网也能用
CUDA优化的冷知识18| texture和surface
https://docs.nvidia.com/cuda/cuda-c-best-practices-guide/index.html 来阅读原文。
GPUS Lady
2021/02/05
1.2K0
OpenGL ES _ 着色器_纹理图像
玩过游戏的同学们,都知道在游戏人物身上穿的那个叫皮肤,专业点将那个就叫做纹理图像。GLSL 支持在顶点和片段着色器使用纹理图像。
酷走天涯
2018/09/14
1.3K0
Shader-高级纹理-立方体纹理
是环境映射(EnvironmentMapping)一种实现方式。 纹理采样:对立方体采样需要提供一个三维的纹理坐标,这个三维纹理坐标表示了我们在世界空间下的一个3D、方向。
祝你万事顺利
2019/05/29
9010
Qt官方示例-字体采样器
❝预览系列字体的例子。❞   建立字体树显示。 QFontDatabase database; fontTree->setColumnCount(1); fontTree->setHeaderLabels(QStringList() << tr("Font")); foreach (QString family, database.families()) { const QStringList styles = database.styles(family); if (styles.i
Qt君
2023/03/17
4170
Qt官方示例-字体采样器
OpenGL(八)--纹理相关APIOpenGL(八)--纹理相关API
OpenGL(八)--纹理相关API 1. 原始图像数据 //存储图像数据所占内存大小 size = 图像的高度 * 图像的宽度 * 每个像素所占字节数 像素所占字节数:一般为4Byte,包含RGBA四个通道,每个通道为1Byte(8Bit) 2. 认识函数 像素存储方式 //改变像素存储方式 void glPixelStorei(GLenum pname,GLint param); //恢复像素存储方式 void glPixelStoref(GLenum pname,GLint param); /
用户8893176
2021/08/09
1.2K0
OpenGL(八)--纹理相关APIOpenGL(八)--纹理相关API
Metal入门教程总结
本文介绍Metal和Metal Shader Language,以及Metal和OpenGL ES的差异性,也是实现入门教程的心得总结。
落影
2018/08/21
5.1K0
Metal入门教程总结
纹理投影测试
GPU Gems3里有个不规则地形(X,Y,Z三个方向上都有面), 这时就没法简单地用X,Z坐标来计算UV了
逍遥剑客
2019/02/20
6630
点击加载更多

相似问题

采样器不包扎纹理

12

纹理采样器ID不映射到纹理单元

27

绑定OpenGL纹理采样器

10

对纹理采样器纹理单位值的困惑

13

纹理对象和采样器的多重纹理化理论

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档