我在Python中创建了一个不可变的数据类型,其中每秒都会创建和发布数百万个对象。在彻底分析代码之后,构造函数似乎是花费大部分时间的地方
我想到的解决方案是使用对象池,以便引用计数和内存分配一次完成。我研究过像this这样的解决方案,其中acquire
和release
方法需要显式调用
但是,我实现的类类似于Python中的^{numpy
自动创建和释放。例如,使用我的类的一小段代码如下所示(我使用Decimal而不是我自己的类):
import numpy as np
from decimal import Decimal
x = np.array([[Decimal(1), Decimal(2)], [Decimal(3), Decimal(4)]]
y = np.array([[Decimal(5), Decimal(6)], [Decimal(7), Decimal(8)]]
z = (x * y) + (2 * x) - (y ** 2) + (x ** 3)
因为类是不可变的,所以numpy需要为每个操作创建一个新对象,这会减慢整个代码的速度。另外,因为numpy
是创建这些对象的代码,我认为我不能显式地调用acquire
或release
等方法
有没有一个更好的对象池实现,或者其他一些方法,在这些方法中,一次创建大量对象,然后,释放的对象自动放回池中?换句话说,有没有另一种解决方案可以避免频繁创建和销毁对象
另外,我知道这不是使用numpy
的好方法。这是我设计的第一步,希望numpy
在接下来的步骤中能更有效地使用
你喜欢这个工作吗
相关问题 更多 >
编程相关推荐