有效地分配大量的Python对象

时间:2017-05-19 19:21:29

标签: python performance python-performance

我正在研究一个Python程序,并且有一个内部循环会导致性能问题。我在其上运行了一个分析器,我发现50%的时间花在了对象分配上。基本上,这样的事情:

result_list = []
for i in range(BIG_NUMBER):
    obj = MyClass()
    # do stuff with obj...
    result_list.append(obj)

obj = MyClass()占用了50%的时间。有没有办法在Python中有效地分配大量的这些对象?也许某种批量分配?

编辑:不复制/粘贴整个MyClass,它具有以下特征:

  • 它是一个ORM对象,因此它基本上将属性映射到数据库值
  • 它有很多属性函数,元类等,所以它是一个非常好的"胖"类

# do stuff with obj...行主要通过setattr设置各种属性,但在少数情况下通过自定义函数设置。因此,如果要设置10个属性,则9通常通过setattr,1可能通过特殊功能。这部分需要大约40%的时间,我将分别对其进行优化。

1 个答案:

答案 0 :(得分:-2)

如果对象开始一个空的构造函数调用,如果循环,你不能把它拉出来吗?然后 copy.deepcopy 您的种子对象?