Skip to main content
 首页 » 编程设计

python之有没有更有效的方法在循环中分配一个类的大量实例

2025年05月04日8tuyile006

我正在开发一个 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% 的时间,我正在单独对其进行优化。

请您参考如下方法:

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