一般我们读取文件,都是直接把文件的内容读取到内存中,然后再对其进行处理,但是如果文件很大,例如几个G甚至几百G,这时候使用读取到内存的方式就不行了,会直接导致内存溢出而卡机,这种情况,python中的yield就很好用,下面举个简单的例子,几行代码很好理解。
def read_file(file_path):
with open(file_path, 'r') as file:
for line in file:
yield line
if __name__ == '__main__':
file_path = 'xxxxx'
for line in read_file(file_path):
print(line)
这样子会一行一行地读取文件中的数据,对内存的消耗是极低的,但是如果文件的内容本身就是一行,这种方式就不适用了。