内存泄漏由Python中的大对象引起

时间:2011-04-20 02:34:32

标签: python

  

可能重复:
  Possible Fix to deal with Python Memory usage.

大家好,

我目前正在使用Python从API程序中检索数据。我将数据存储到以下类中:

class c1:

STORE = []
ITEMS = []
PRICES = []

def __init__(self, STORE, ITEMS,PRICES):
    self.STORE = STORE
    self.ITEMS = ITEMS
    self.PRICES = PRICES

列表STORE包含STORES列表,其中可能有的项目位于ITEMS下。列表应如下所示:

商店 - ['S1','S2',......,'S30000']

ITEMS - ['item1','item2',...,'item800']

列表价格是一个多维列表,其中包含商店中商品的价格(例如,价格[0] [0]将获得'S1'的'item1'的价格,以及价格[20] [4 ]会在'S4'得到'item20'的价格。

我正在使用此类创建多个对象,最多6个。每个对象将包含太多30,000个商店,超过800个项目,以及价格矩阵800到30,000。

这样做的目的是创建一个报告,显示有关商店定价过高,价格基于位置等的不同指标。

我遇到了导致内存泄漏的问题,看着Windows任务管理器,我似乎使用了高达1.8 GB的内存。

大家可能建议我使用API​​单独读取每个价格,商品和商店,而不是将任何内容存储在内存中,但这是不可能的。我已经开发了代码,运行大约需要3个小时,这对于当前需求来说不是一个选项。

所以我有两个非常简单的问题:

  1. 我正在使用gc,但似乎我的代码在gc之后没有“释放”内存。是否有一种“释放”记忆的强力方法?或者扩展python使用的允许内存?

  2. 是否有其他数据结构可能比列表更轻量级? STORE和ITEMS下的实例是字符串,PRICES下的实例是双倍的。已经看过Numpy,但我被迫使用Numpy不兼容的Python 2.3。

  3. 提前谢谢。

0 个答案:

没有答案