python - 枚举大型 csv 的加载似乎没有被懒惰地评估
问题描述
我的理解是 enumerate 计算是惰性的,因为它可以应用于生成器,并且 csv.reader 也是惰性的,但是,当结合在一个大的 csv 文件上时,它们会使我的内核崩溃。
此代码挂起并最终使我的内核在一个非常大的文件上崩溃:
with open(RAW_DATA) as file:
csv_reader = csv.reader(file, delimiter=',')
data = []
for row_idx, row in enumerate(csv_reader):
data.append(row)
if (row_idx + 1) % BLOCK_SIZE == 0:
dump_data(data)
data = []
但是,这段代码运行良好,每个循环大约需要 2 秒:
with open(RAW_DATA) as file:
csv_reader = csv.reader(file, delimiter=',')
data = []
row_idx = 0
for row in csv_reader:
data.append(row)
row_idx += 1
if row_idx % BLOCK_SIZE == 0:
dump_data(data)
data = []
这对我来说没有意义 - 我认为假设惰性评估,它们在功能上是等效的?
解决方案
推荐阅读
- c# - getfiles 中是否有特定扩展名的搜索模式(多个)?
- flutter - 在 iOS 15 beta 上使用 canvaskit 进行 Flutter web
- reactjs - 在我的 App 组件中导入 i18n 后,组件消失了
- android - Why i see Lost device connection message when open gallery using image_picker?
- c++ - Make valgrind to collect the data on request
- amazon-web-services - EMR stuck at bootstrap script
- javascript - 为什么我的所有首字母大写的函数在与最终结果比较时返回 false?Javascript
- matplotlib - i am receiving an error when trying to install plotly in jupyter notebook
- android - How to pass the correct coroutine scope in unit test when testing viewmodel
- c# - Entity Framework Property HasConversion with Arguments