任何人都可以解释为什么会这样吗?
>>> 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
答案 0 :(得分:1)
gc.collect()
的结果是number of unreachable objects:
<强>
gc.collect([generation])
强>
没有参数,运行完整集合。可选参数生成可以是指定要收集哪一代(从0
到2
)的整数。如果世代号无效,则会引发ValueError
。 返回找到的无法访问的对象数。
当您以交互方式将该程序输入Python时,所有这些调用的结果将由REPL(read-eval- print 循环)输出。这与您以交互方式将42+7
输入Python时没有什么不同,尽管存在 no 指示您想要打印它(例如,使用49
,它回显print
1}}来电)。
因此,您看到的输出是gc.collect()
的所有归零值,散布在范围打印的“实际”输出中。
如果您将此作为真实的脚本运行,则只会看到数字0..9
,因为不涉及REPL。或者你也可以通过对它做一些事情来防止输出返回值,例如:
>>> for i2 in range(4):
... print i2
... junk = gc.collect()
...
0
1
2
3