我正在研究一个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
,它具有以下特征:
# do stuff with obj...
行主要通过setattr
设置各种属性,但在少数情况下通过自定义函数设置。因此,如果要设置10个属性,则9通常通过setattr
,1可能通过特殊功能。这部分需要大约40%的时间,我将分别对其进行优化。
答案 0 :(得分:-2)
如果对象开始一个空的构造函数调用,如果循环,你不能把它拉出来吗?然后 copy.deepcopy 您的种子对象?