有人能解释一下为什么会发生这种情况吗?
>>> for i2 in range(10):
... print i2
... gc.collect()
...
0
0
1
0
2
0
3
0
4
0
5
0
6
0
7
0
8
0
9
0发布于 2015-09-04 06:34:39
gc.collect()的结果是不可达对象的数目
没有参数的
gc.collect([generation]),运行完整的集合。可选参数生成可以是一个整数,指定要收集哪个生成(从0到2)。如果生成号无效,则引发ValueError。找到的不可达对象的数目被返回.
当您以交互方式将该程序输入Python时,所有这些调用的结果将由REPL (read-eval-print循环输出)。这与您以交互方式将42+7输入Python时没有什么不同,它会回显49,尽管没有迹象表明您希望打印它(例如,使用print调用)。
因此,您正在看到的这个输出就是来自gc.collect()的所有零返回值,它们分散在范围打印的“真实”输出中。
如果您将它作为一个真正的脚本运行,您只会看到数字0..9,因为REPL并不涉及。或者,您也可以通过对其执行一些操作来防止返回值被输出,例如:
>>> for i2 in range(4):
... print i2
... junk = gc.collect()
...
0
1
2
3https://stackoverflow.com/questions/32391461
复制相似问题