繁体   English   中英

垃圾收集太慢

[英]Garbage collection too slow

我有一个函数foo()创建一个BIG列表(然后将其转换为pandas数据框)

当我给它计时时,它运行有点慢,但是很合理:

timeit.Timer('foo()', setup="from __main__ import foo").timeit(number=1)
6.69

但是,这不是我在执行过程中得到的时间,因为垃圾回收已被禁用。 如果启用了垃圾收集器,它的运行速度会慢2倍:

timeit.Timer('foo()', setup="from __main__ import foo \ngc.enable()").timeit(number=1)
20.31

什么时候可以禁用垃圾收集器? 我应该在foo()中这样做吗?

根据python文档you can disable the collector if you are sure your program does not create reference cycles. 如果不想在执行foo期间发生自动GC。 做这样的事情很有意义

def foo():
   gc.disable()
   // Your logic
   gc.enable()

链接: https//docs.python.org/2/library/gc.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM