Her*_*nan 19 python memory performance closures class
我想更多地了解作为类与闭包实现的"with memory"函数.
考虑(非常)简单的例子:
def constant(value):
def _inner():
return value
return _inner
x = constant(5)
print(x())
Run Code Online (Sandbox Code Playgroud)
与
class Constant():
def __init__(self, value):
self._value = value
def __call__(self):
return self._value
y = Constant(5)
print(y())
Run Code Online (Sandbox Code Playgroud)
这些中的任何一个的性能和内存消耗都更好吗?使用插槽会让课程表现更好吗?
谢谢,
埃尔南
Ps.-我知道在这个极其简单的例子中,可能没关系.但是我对更复杂的函数感兴趣,这些函数将被多次调用或者将被多次实例化.
在Python 2.6中,我得到以下内容:
def foo(x):
def bar():
return x
return bar
b = foo(4)
b.__sizeof__()
>>> 44
Run Code Online (Sandbox Code Playgroud)
但是使用一个类:
class foo(object):
def __init__(self,x):
self.x = x
def __call__(self):
return self.x
c = foo(4)
c.__sizeof__()
>>> 16
Run Code Online (Sandbox Code Playgroud)
看起来功能版本的内存占用量更大.
| 归档时间: |
|
| 查看次数: |
1140 次 |
| 最近记录: |