当要扫描内存中放不下的大数据集时,需要找到一种惰性获取数据项的方式,即按需一次获取一个数据项,而不是一次性收集全部数据。这句话是不是有问题,内存放不下的大数据集,这个大数据集是不是也要存在内存
1. 数据到底存在哪里?
open('a.txt') 时,Python 并没有把这 100GB 的数据塞进内存。它只是向操作系统要了一个“文件指针(句柄)”。这个指针就像是一根极细的管子,一头连着硬盘上的文件,另一头连着你的程序。2. 什么是真正的“惰性(Lazy)”?
for line in open('a.txt'): 遍历这个 100GB 的文件时,底层的真实过程是这样的:对比:惰性 vs 贪婪(Eager)