generator - 使用生成器节省内存
问题描述
假设我的目录中有一百万个文件,如果我这样做的话,这将是一个巨大的内存消耗:
x = os.listdir('.')
假设由于某种原因,我选择使用 os.walk 方法并这样做是为了使用生成器:
def give_object(somepath)
for x in os.walk(somepath):
for j in x[2]:
yield j
os.walk 本身就是一个生成器,我通过 x 获得 (cur_directory, sub_directories, list_of_all_files_in_cur_directory) 的值。x[2] 将包含 100 万个文件名。在第二个 for 语句中,我还生成了一个值,创建了一个生成器,但是,此时,我已经从 x 创建了一个列表,所以,这段代码真的会节省用于100万件?或者这不是在用例中使用生成器的正确方法吗?如果是这样,我应该怎么做?
解决方案
推荐阅读
- python - Plotly scatter map value error for 'size' property
- c# - 有没有办法让 C# 中的 getter 在线缓存其结果?
- dialogflow-es - Messenger not loading Dialogflow Cards with certain urls
- ffmpeg - 使用 ffmpeg 将多个音轨和字幕添加到 dash manifest (mpd)
- css - 我想让一个元素悬垂到它上面的元素中
- css - 如何使 SCSS 中的字体 URL 与不同的 Flask 应用程序根一起工作
- angular - 角十进制管道不显示前导零?
- python - Python HTML解析器分页
- flutter - ImagePicker 结果不显示在 PhotoView 中
- c# - 编译Relaxatinos 和SecurityPermissions