我有一个班级和它的方法.该方法在执行期间重复多次.此方法使用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
更新:用零替换为空
最佳答案 Numpy数组一旦创建就很快.但是,创建一个数组非常昂贵.比创建一个python列表还要多.
在像你这样的情况下,你一次又一次地创建一个新的数组(在for循环中?),我总是预先分配数组结构,然后重用它.
我无法评论Python是否足够智能来优化它,但我猜它不是:)
您的数组有多大以及调用此方法的频率如何?