2014-01-22 4 views
7

Я занимаюсь разработкой рабочего анализатора данных на питоне с использованием 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?

В противном случае любое предложение по лучшему решению?

+5

Вы можете немного уменьшить его, только импортируя методы и классы, которые вам нужны из каждой библиотеки. НАПРИМЕР. если я использую только pandas DataFrame, вместо «import pandas» используйте «из pandas import DataFrame». –

+0

почему вы даете msg как аргумент, в то время как вы ничего не делаете с ним? – usethedeathstar

+0

Отредактировано. Это была копия/вставка из предыдущего редактирования. @RyanG Как вы можете видеть, есть прокомментированная строка, которая делает именно это, но, похоже, это не влияет на использование памяти ... – Fra

ответ

2

Извините, что сказал вам, но нет возможности загрузить в память только часть модуля python. Вы можете использовать многопоточность, если это применимо к вашему случаю - потоки могут использовать одну и ту же память модуля.

0

Я не уверен, какую проблему вы хотите решить, но если вам нужно парализовать numpy, возможно, pycuda может быть чем-то для вас. numpy и pandas прекрасно работают при параллелизации в cuda, но numpy будет загружаться только один раз в памяти, но запускается в нескольких процессах на графической карте. Подробнее об этом читайте здесь: https://developer.nvidia.com/pycuda

Смежные вопросы