我有一个类及其方法。该方法在执行期间重复多次。此方法使用
numpy
数组作为临时缓冲区。我不需要在方法调用之间将值存储在缓冲区内。我应该创建数组的成员实例以避免方法执行期间内存分配的时间泄漏吗?我知道最好使用局部变量。但是 Python 是否足够聪明,只为数组分配一次内存?
class MyClass:
def __init__(self, n):
self.temp = numpy.zeros(n)
def method(self):
# do some stuff using self.temp
或
class MyClass:
def __init__(self, n):
self.n = n
def method(self):
temp = numpy.zeros(self.n)
# do some stuff using temp
更新:将
np.empty
替换为 np.zeros
Numpy 数组一旦创建就很快。但是,创建数组非常昂贵。比创建一个 python 列表要多得多。
在像你这样的情况下,你一次又一次地创建一个新数组(在 for 循环中?),我总是会预先分配数组结构然后重用它。
我不能评论 Python 是否足够聪明来优化它,但我猜它不是:)
你的数组有多大,调用这个方法的频率有多高?