相关疑难解决方法(0)

如何在Python中分析内存使用情况?

我最近对算法感兴趣,并开始通过编写一个简单的实现,然后以各种方式优化它来探索它们.

我已经熟悉用于分析运行时的标准Python模块(对于大多数事情我已经发现IPython中的timeit魔术功能已足够),但我也对内存使用感兴趣,所以我也可以探索这些权衡(例如,缓存先前计算的值表的成本与根据需要重新计算它们的成本.是否有一个模块可以为我分析给定函数的内存使用情况?

python memory profiling

198
推荐指数
7
解决办法
21万
查看次数

使用大型Numpy阵列的技术?

有时您必须在一个或多个大型Numpy阵列上执行许多中间操作.这很快就会导致MemoryErrors.在我迄今为止的研究中,你发现Pickling(Pickle,CPickle,Pytables等)并且gc.collect()是减轻这种情况的方法.我想知道在处理大量数据时是否还有其他有经验的程序员使用的技术(当然,除了删除策略/代码中的冗余).

另外,如果有一点我确定没有什么是免费的.使用其中一些技术,有什么权衡(即速度,稳健性等)?

python arrays optimization memory-management numpy

20
推荐指数
3
解决办法
2万
查看次数

numpy数组中有多少内存?RAM是限制因素吗?

我正在使用numpy创建一个边长为100的立方体数组,因此总共包含100万个条目.对于每百万个条目,我插入一个100x100矩阵,其条目由随机生成的数字组成.我使用以下代码来执行此操作:

import random
from numpy import *

cube = arange(1000000).reshape(100,100,100)

for element in cube.flat:
    matrix = arange(10000).reshape(100,100)
    for entry in matrix.flat:
        entry = random.random()*100
    element = matrix
Run Code Online (Sandbox Code Playgroud)

我期待这需要一段时间,但是生成了100亿个随机数,我不确定我的电脑是否可以处理它.这样一个阵列会占用多少内存?RAM是一个限制因素,即如果我的计算机没有足够的RAM,它是否无法实际生成阵列?

此外,如果有更高效的实现此代码,我会很感激提示:)

python memory arrays numpy

8
推荐指数
1
解决办法
9976
查看次数