谁能解释为什么会这样?
>>> 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
最佳答案
gc.collect()
的结果是 number of unreachable objects :
gc.collect([generation])
With no arguments, run a full collection. The optional argument generation may be an integer specifying which generation to collect (from0
to2
). AValueError
is raised if the generation number is invalid. The number of unreachable objects found is returned.
当您以交互方式将该程序输入 Python 时,所有这些调用的结果都由 REPL(read-eval-print 循环)输出。这与当您以交互方式在 Python 中输入 42+7
并且它回显 49
没有什么不同,尽管没有没有指示您想要打印它(例如,使用 print
调用)。
因此,您看到的输出是 gc.collect()
的所有零返回值,散布在范围打印的“真实”输出中。
如果您将其作为真实 脚本运行,您只会看到数字0..9
,因为不涉及REPL。或者你同样可以通过对它做一些事情来防止返回值被输出,例如:
>>> for i2 in range(4):
... print i2
... junk = gc.collect()
...
0
1
2
3
关于python gc.collect() 在循环中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32391461/