Python在对大数据进行处理时,发现随着数据处理量的增大,性能急剧下降。查找原因发现是由于GC(垃圾回收)造成的性能下降。
Python的垃圾回收机制的工作原理为每个对象维护一个引用计数,每次内存对象的创建与销毁都必须修改引用计数,从而在大量的对象创建时,需要大量的执行修改引用计数操作,对于程序执行过程中,额外的性能开销是令人可怕的。并且由于我们算法的原因,数据往往读入内存后不需要释放,所以每次垃圾回收其实都不会回收内存,白白耗费性能去检查每个对象是否可以回收。回收的触发时机有两种可能,一是用户主动调用gc.collect(),二是对象数量超过阈值。
所以正是GC拖慢了程序的性能,所以我们可以考虑在处理的时候禁止垃圾回收。
代码:
import gc
gc.disable();
***程序处理逻辑
gc.enable();