首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python循环gc.collect()

python循环gc.collect()
EN

Stack Overflow用户
提问于 2015-09-04 06:29:38
回答 1查看 2.3K关注 0票数 3

有人能解释一下为什么会发生这种情况吗?

代码语言:javascript
复制
>>> 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
EN

回答 1

Stack Overflow用户

发布于 2015-09-04 06:34:39

gc.collect()的结果是不可达对象的数目

没有参数的gc.collect([generation]),运行完整的集合。可选参数生成可以是一个整数,指定要收集哪个生成(从02)。如果生成号无效,则引发ValueError找到的不可达对象的数目被返回.

当您以交互方式将该程序输入Python时,所有这些调用的结果将由REPL (read-eval-print循环输出)。这与您以交互方式将42+7输入Python时没有什么不同,它会回显49,尽管没有迹象表明您希望打印它(例如,使用print调用)。

因此,您正在看到的这个输出就是来自gc.collect()的所有零返回值,它们分散在范围打印的“真实”输出中。

如果您将它作为一个真正的脚本运行,您只会看到数字0..9,因为REPL并不涉及。或者,您也可以通过对其执行一些操作来防止返回值被输出,例如:

代码语言:javascript
复制
>>> for i2 in range(4):
...     print i2
...     junk = gc.collect()
...
0
1
2
3
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32391461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档