垃圾收集太慢

时间:2017-04-01 18:34:39

标签: python pandas garbage-collection

我有一个函数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()内部这样做吗?

1 个答案:

答案 0 :(得分:1)

根据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