GVKun编程网logo

numpy 数组的 Python 内存使用情况(python数组内存不足怎么解决)

3

如果您想了解numpy数组的Python内存使用情况和python数组内存不足怎么解决的知识,那么本篇文章将是您的不二之选。我们将深入剖析numpy数组的Python内存使用情况的各个方面,并为您解答

如果您想了解numpy 数组的 Python 内存使用情况python数组内存不足怎么解决的知识,那么本篇文章将是您的不二之选。我们将深入剖析numpy 数组的 Python 内存使用情况的各个方面,并为您解答python数组内存不足怎么解决的疑在这篇文章中,我们将为您介绍numpy 数组的 Python 内存使用情况的相关知识,同时也会详细的解释python数组内存不足怎么解决的运用方法,并给出实际的案例分析,希望能帮助到您!

本文目录一览:

numpy 数组的 Python 内存使用情况(python数组内存不足怎么解决)

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 内存使用情况

如何解决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 [],内存使用情况

c# – List vs long [],内存使用情况

关于内存的大小
List<long> listofLongs;
long[] ArrayOfLongs;

如果每个都有N个元素,他们吃了多少内存?

我问这是因为据我所知,.NET没有模板(泛型)专业化.

解决方法

实际上相同数量的内存(从技术上讲,List可能会消耗更多内存,因为它已经过度分配,因此它可以更容易地增长).

.NET中的通用集合不需要打包它们所拥有的项目,这将是一个巨大的内存和性能接收器.

c# – 内存使用情况,SortedList vs List问题

c# – 内存使用情况,SortedList vs List问题

我在一个存储大约15-100K数据的类中使用了SortedList().

最近我的要求发生了变化,数据不应再存储为已排序,所以我切换到了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/字典(字符串,对象)在我的测试中也没有好多少.

解决方法

列表< T> 9k项目的容量将介于9k和18k之间,因此这些项目的开销将在36到72千字节之间(64位系统上的双倍).

显然,72 kB甚至没有接近你看到的20 MB差异,因此列表本身的内存使用不是原因.特别是考虑到排序列表还必须保持对每个对象的引用,因此内存使用应该是相同的.

所以,要么存在使用内存的其他内容,要么您没有查看应用程序的实际内存使用情况.如果您正在查看任务管理器,则不会看到使用了多少内存,只看了内存管理器分配了多少内存.

Confluence 6 系统运行信息中的 JVM 内存使用情况

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 内存使用情况的相关知识,请在本站寻找。

本文标签: