减少python程序的内存占用

时间:2014-01-22 03:25:43

标签: python numpy pandas

我正在使用numpy和pandas在python中开发数据分析工作者。我会部署很多这些工人,所以我想保持它的轻量级。

我尝试使用此代码进行检查:

import logging
import resource
logging.basicConfig(level=logging.DEBUG)

def printmemory(msg):
    currentmemory = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
    logging.debug(msg+': total memory:%r Mb' % (int(currentmemory)/1000000.))

printmemory('begin')

#from numpy import array, nan, mean, std, sqrt, square
import numpy  as np
printmemory('numpy')

import pandas  as pd
printmemory('numpy')

我发现只需将它们加载到内存中就会让我的工作人员变得非常沉重。有没有办法减少numpy和pandas的内存占用?

否则,有关更好解决方案的任何建议吗?

2 个答案:

答案 0 :(得分:2)

很抱歉告诉你,但是没有办法只将一部分python模块加载到内存中。如果适用于您的情况,您可以使用多线程 - 线程可以共享相同的模块内存。

答案 1 :(得分:0)

我不确定你想要解决什么问题,但是如果你需要对numpy进行paralellize,也许pycuda可能适合你。 numpy和pandas在cuda中被瘫痪时效果很好,但numpy只能在内存中加载一次,但在显卡的多个进程中被触发。 在这里阅读更多相关信息: https://developer.nvidia.com/pycuda