【发布时间】:2019-01-28 12:13:06
【问题描述】:
我正在分块读取一个大文件,例如
> def gen_data(data):
> for i in range(0, len(data), chunk_sz):
> yield data[i: i + chunk_sz]
如果我使用长度变量而不是 len(data) ,类似的东西
length_of_file = len(data)
def gen_data(data):
for i in range(0, length_of_file, chunk_sz):
yield data[i: i + chunk_sz]
大文件的性能改进是什么。我测试了小的,但没有看到任何变化。
P.S 我来自 C/C++ 背景,在 while 或 for 循环中计算每次重复是一种不好的做法,因为它会为每次调用执行。
【问题讨论】:
-
您不是“使用范围函数读取文件”-文件是流...您不能像这样对它们进行索引。如果您已经完全在
data中获取了文件数据.. 为什么要分块呢? -
另一方面,由于您在函数内部使用变量
length_of_file,因此最好在函数本身中定义它以避免与全局变量(如果有任何同名)发生任何可能的冲突.所以把length_of_file = len(data)放在函数中for循环之前
标签: python performance file for-loop range