我有以下课程:
class C1: STORE = [] TYPE = [] ITEMS = [] PRICE = [] def __init__(self,STORE,TYPE,ITEMS,PRICE): self.STORE = STORE self.TYPE = TYPE self.ITEMS = ITEMS self.PRICE = PRICE
该类的目的是存储不同商店中的所有商品及其价格。商品按字母数字顺序排列,如果商店中不存在该商品,则价格显示为 0。我从数据库中的表中检索数据,如下所示:
S1 S2 S3 .... S29000 item1 15 2 30 .... 100 item2 0 1 0 .... 5 . . . item600 30 190 10 .... 25
STORE 和 ITEMS 列表如下所示:
商店:[‘S1’,’S2’,…,’S29000’] 项目:[‘item1’,’item2’,....,’item600’]
对于 PRICE 列表,它是一个多维列表,通过指定商店索引和商品索引,它将为您提供指定商店中指定商品的价格(例如,price[0][0] 将为您提供 S1 中 item1 的价格,即 15)。
利用类中的所有这些数据,我运行了涉及一些“复杂”计算的“报告”。
我遇到的问题是,我正在从不同的表创建类对象,并且根据 Windows 任务管理器,python 的内存使用量达到近 1.8 GB。
我知道我的对象是内存消耗的主要原因,这让我想到两个问题:
以前,每次我想计算某个东西时,我都会尝试读取数据库,这会让我的程序运行近 3 个小时,但现在将数据存储到类中需要 40 分钟。所以我的“客户”不想采用以前的方式。
提前致谢。
编辑:原始数据看起来像我之前描述的表格,但只能通过供应商提供的 API 访问。
EDIT2:我的目的是为多个“数据源”创建各种 C1 类型的对象。因此,我最终会得到 6 个 C1 类型的对象,每个对象都包含不同的数据
EDIT3:为了访问每个商店的商品价格列表,API 有一个函数,其形式为 GetPrices(‘Store Name’)。因此,有必要为每个商店调用此函数。因此,目前,我生成 C1 对象的代码有一个巨大的 For 循环,它为每个商店调用此函数。
您可以尝试该array模块,它出现在 Python 2.3 中。除此之外,您可能还想研究使用适当的数据库来处理这些内容。