我有一个类及其方法。该方法在执行过程中会重复多次。该方法使用一个numpy
数组作为临时缓冲区。我不需要在方法调用之间将值存储在缓冲区内。我是否应该创建数组的成员实例以避免方法执行期间内存分配的时间泄漏?我知道最好使用局部变量。但是 Python 是否足够聪明,只为数组分配一次内存?
class MyClass:
def __init__(self, n):
self.temp = numpy.zeros(n)
def method(self):
# do some stuff using self.temp
Or
class MyClass:
def __init__(self, n):
self.n = n
def method(self):
temp = numpy.zeros(self.n)
# do some stuff using temp
更新:已更换np.empty
with np.zeros
Numpy 数组一旦创建就很快。然而,创建一个数组是相当昂贵的。不仅仅是创建一个 Python 列表。
在像您这样的情况下,您一次又一次地创建一个新数组(在 for 循环中?),我总是会预先分配数组结构,然后重用它。
我无法评论 Python 是否足够聪明来优化这个,但我猜它不是:)
您的数组有多大以及调用此方法的频率如何?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)