[问题] 循环中想用gc处理内存

楼主: yauhh (小y宝贝)   2014-05-21 02:33:09
嗨,新手到此拜会.
想问个问题,我有个工作需要用循环读大量资料.
我想,假如在循环中指定了很多区域变量,这些变量空间在下一圈都直接抛弃掉吗?
或者,我是否该在循环跑到一个数量的圈数,就开一次gc?
作者: apua (Apua)   2014-05-21 14:31:00
like this? ``for i in [1,2]: a=1``
楼主: yauhh (小y宝贝)   2014-05-21 17:24:00
Yes. Many variables local to for loop.
作者: grtfor (哦啦啦)   2014-05-21 23:32:00
没记错的话,python 的gc call了,也不会马上回收
作者: ya790206 (残云夺月)   2014-05-22 23:00:00
在 python,每次呼叫 gc.collect() 都会真的跑一次garbage collect。详见CPython 原始码Modules/gcmodule.c的 gc_collect function 。这里说的是官方网站以c语言写的直译器,其他的我不知道
楼主: yauhh (小y宝贝)   2014-05-23 12:09:00
那假如不用gc,循环中的变量会累积吗?
作者: ya790206 (残云夺月)   2014-05-23 22:28:00
如果你的"不用gc"的意思是指gc.disable()来停用 gc 的话那么你所产生的物件都不会被删除。如果你"不用gc"指不呼叫gc.collect() ,则系统会在必要时自动呼叫gc.collect()。你不必刻意去呼叫他(除非你知道你在干嘛)一直呼叫gc.collect()不会出事,只是一直再做没意义的事而已
楼主: yauhh (小y宝贝)   2014-05-23 23:03:00
唉,我真正在问的问题是循环中的变量所占的内存空间,但你却只在gc那边绕. gc我知道啦,如果我想用就会用,但要用也要用在适当的情况. 而我的问题就是在询问/寻找那个适当的情况而已.不要继续在gc绕了. 我没问gc的问题.
作者: ya790206 (残云夺月)   2014-05-24 11:03:00
我去年就已经看完 python gc 算法和 vm 如何执行程式码并不是为了回答你问题而去看程式码。
作者: timTan (用口头禅区分年记)   2014-05-24 18:23:00
再问清楚一点就好,何必讲些失焦的话

Links booklink

Contact Us: admin [ a t ] ucptt.com