对生成器不算了解,只是会用。可现在遇到了一个问题:
def test():
a = 1
b = 2
c = 3
while True:
yield c
c += 1
执行这段代码, a, b 变量还占用空间吗?
若占用的话,有啥办法可以实现相同的功能而避免 a b 变量占用空间呢?
实际情况是内存有点小, yield 的是一个回调函数,不想办法压榨内存的话会溢出。。。
1
lecher 2016-04-03 23:14:11 +08:00 2
python 有内存分析的模块: memory_profiler
用 pip 安装之后,可以通过在方法前加 @profile 之后执行 python -m memory_profiler filename.py 检查内存情况 代码和变量都会占用内存,生成器在引用之后,只要引用数大于 0 ,是不会释放里面声明的内容的。 |
2
feather12315 OP @lecher Thanks. 我看看这
|
4
julyclyde 2016-04-05 10:59:47 +08:00 1
我猜可能是因为 generator 函数没有 return , decorator 不知道它什么时候完成的
|
5
feather12315 OP @julyclyde 唔。最近有些忙,我还没看。。谢谢你啦。
|