如果您想了解numpy数组的Python内存使用情况和python数组内存不足怎么解决的知识,那么本篇文章将是您的不二之选。我们将深入剖析numpy数组的Python内存使用情况的各个方面,并为您解答
如果您想了解numpy 数组的 Python 内存使用情况和python数组内存不足怎么解决的知识,那么本篇文章将是您的不二之选。我们将深入剖析numpy 数组的 Python 内存使用情况的各个方面,并为您解答python数组内存不足怎么解决的疑在这篇文章中,我们将为您介绍numpy 数组的 Python 内存使用情况的相关知识,同时也会详细的解释python数组内存不足怎么解决的运用方法,并给出实际的案例分析,希望能帮助到您!
本文目录一览:- numpy 数组的 Python 内存使用情况(python数组内存不足怎么解决)
- Android Java 绑定中的 OpenCV 内存使用情况
- c# – List vs long [],内存使用情况
- c# – 内存使用情况,SortedList vs List问题
- Confluence 6 系统运行信息中的 JVM 内存使用情况
numpy 数组的 Python 内存使用情况(python数组内存不足怎么解决)
我正在使用 python 来分析一些大文件并且遇到了内存问题,所以我一直在使用 sys.getsizeof() 来尝试跟踪使用情况,但是 numpy
数组的行为很奇怪。这是一个涉及我必须打开的反照率地图的示例:
>>> import numpy as np
>>> import struct
>>> from sys import getsizeof
>>> f = open('Albedo_map.assoc','rb')
>>> getsizeof(f)
144
>>> albedo = struct.unpack('%df' % (7200*3600),f.read(7200*3600*4))
>>> getsizeof(albedo)
207360056
>>> albedo = np.array(albedo).reshape(3600,7200)
>>> getsizeof(albedo)
80
好吧,数据仍然存在,但对象的大小(3600x7200 像素图)已从 ~200 Mb 变为 80 字节。我希望我的记忆问题已经结束,只是将所有内容都转换为
numpy 数组,但我觉得这种行为,如果是真的,会在某种程度上违反信息论或热力学的某些定律,所以我倾向于相信 getsizeof() 不适用于 numpy
数组。有任何想法吗?
Android Java 绑定中的 OpenCV 内存使用情况
如何解决Android Java 绑定中的 OpenCV 内存使用情况
我编写了迭代图像处理函数和下面列出的部分。
Log.d(TAG,"#1 $iterNum")
val alphaBlendedMat = Mat(targetMat.height(),targetMat.width(),CvType.CV_8UC4)
for (i in 0..iterNum) {
val alpha = fromAlpha + i * (toAlpha - fromAlpha) / iterNum
// Border thickness
val windowMaskIter = Mat()
windowMask.copyTo(windowMaskIter)
erode(windowMask,windowMask,kernel)
Core.bitwise_xor(windowMaskIter,windowMaskIter)
// Src+target alpha blending
val alphaBlendedMatTmp = Mat(targetMat.height(),CvType.CV_8UC4)
Core.addWeighted(srcMat,alpha,targetMat.submat(roiTarget),1 - alpha,0.0,alphaBlendedMatTmp.submat(roiTarget))
Core.copyTo(alphaBlendedMatTmp.submat(roiTarget),alphaBlendedMat.submat(roiTarget),windowMaskIter)
windowMaskIter.release()
alphaBlendedMatTmp.release()
}
Log.d(TAG,"#2")
当 iterNum 接近 60 时,代码段无任何例外地失败。探查器显示内存使用量超过模拟器实例允许的内存使用量(~0.8Gb)。当我以迭代方式创建和发布新的 Mats 时,我做错了什么?我相信,如果我手动释放垫子,那么 GC 应该在需要新分配时释放内存。是GC有问题还是我对事物的理解有问题?
解决者:
for (i in 0..iterNum) {
val alpha = fromAlpha + i * (toAlpha - fromAlpha) / iterNum
// Border thickness
val windowMaskIter = Mat()
windowMask.copyTo(windowMaskIter)
erode(windowMask,CvType.CV_8UC4)
val targetRoi = targetMat.submat(roiTarget)
val alphaBlendedMatTmpRoi = alphaBlendedMatTmp.submat(roiTarget)
Core.addWeighted(srcMat,targetRoi,alphaBlendedMatTmpRoi)
val alphaBlendedMatRoi = alphaBlendedMat.submat(roiTarget)
Core.copyTo(alphaBlendedMatTmpRoi,alphaBlendedMatRoi,windowMaskIter)
targetRoi.release()
windowMaskIter.release()
alphaBlendedMatRoi.release()
alphaBlendedMatTmp.release()
alphaBlendedMatTmpRoi.release()
}
c# – List vs long [],内存使用情况
List<long> listofLongs; long[] ArrayOfLongs;
如果每个都有N个元素,他们吃了多少内存?
我问这是因为据我所知,.NET没有模板(泛型)专业化.
解决方法
.NET中的通用集合不需要打包它们所拥有的项目,这将是一个巨大的内存和性能接收器.
c# – 内存使用情况,SortedList vs List问题
最近我的要求发生了变化,数据不应再存储为已排序,所以我切换到了List().
但是在这种情况下,我注意到List()消耗的内存大约增加了20%.
9K物品:
> SortedList:105MB
>列表:125MB
15K物品:
> SortedList:115MB
>列表:140MB
在我开发的环境中,记忆非常重要.而不是List(),我可以使用什么来避免这种额外的内存消耗,仍然有一个非排序列表?
附:我使用HashSet(Of String)来提供唯一性检查,同时使用List(Of)来模拟SortedList.ContainsKey(),尽管我认为它不会带来这样的内存开销.
附: 2:我的应用程序在启动时已经有大约80 MB的基本内存分配.因此数字应为105-80 = 25,125-80 = 45,依此类推
结果
感谢所有答案,最终结果如下:
>您应该设置正确的容量以节省内存
> Hashset对内存非常不满意,并且消耗的方式超出预期.这就是问题所在.不知怎的,SortedList()设法使用更少的内存来实现类似的功能.
一些Bencmarks:
500个字符,250000个插入
名单(OF STring)(50000)
274毫秒 – 226 MB
SortedList(Of String,String)(50000)
34868毫秒 – 230 Mb
HashSet的
420毫秒 – 232 MB
字典(OF String,Object)
486毫秒 – 234 MB
虽然当我将减少的数量改为25时,然后:
Hashset为600.000次迭代300 Mb,其中List()为286 Mb
关于Hashset内存使用情况:http://blog.mischel.com/2008/04/09/hashset-limitations/字典(字符串,对象)在我的测试中也没有好多少.
解决方法
显然,72 kB甚至没有接近你看到的20 MB差异,因此列表本身的内存使用不是原因.特别是考虑到排序列表还必须保持对每个对象的引用,因此内存使用应该是相同的.
所以,要么存在使用内存的其他内容,要么您没有查看应用程序的实际内存使用情况.如果您正在查看任务管理器,则不会看到使用了多少内存,只看了内存管理器分配了多少内存.
Confluence 6 系统运行信息中的 JVM 内存使用情况
当前一个正在运行的 Confluence 6 实例的内存使用情况
https://www.cwiki.us/display/CONF6ZH/Viewing+System+Information
关于numpy 数组的 Python 内存使用情况和python数组内存不足怎么解决的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于Android Java 绑定中的 OpenCV 内存使用情况、c# – List vs long [],内存使用情况、c# – 内存使用情况,SortedList vs List问题、Confluence 6 系统运行信息中的 JVM 内存使用情况的相关知识,请在本站寻找。
本文标签: