python在大数据处理方面是十分有优势的。列表推导是一种精炼的写法,可以根据列表制作另外的列表。但是如果输入数据量较多时,会消耗大量的内存,因为会将所有数据加载到内存中。生成器表达式可以解决这个问题,在使用时并不后会将整个输出序列都呈现出来,而是会估值为迭代器iterator,并不会立刻输入处理文件内容。
操作大批量的数据,生成器表达式是十分优秀的。但是返回的迭代器是有状态的,用过后就不能反复使用了。同时,生成器表达式不能对所有数据来全部进行分析,python vaex处理大数据集可以很好的处理这个问题。
笔者使用150M的csv数据来进行测试,列表推导加载数据需要1.1秒,生成器表达式只需要1ms。
生成器表达式可以相互结合,可以将生成的生成器表达式返回的迭代器用作另一个生成器表达式的输入值,串在一起后执行速度很快。外围的迭代器每次前进时,都会推动内部迭代器,连锁效应可以将执行循环、评估条件、逻辑判断等都组合在一起。
网友评论