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