python-3.x - python3读取大文件耗尽内存
问题描述
我正在尝试在 Ubuntu 18.04.4 上的 Python 3(3.6 和 3.8)中读取一个大的基于行的文本文件,但是这样做会耗尽内存,因为缓冲区/缓存的使用会攀升以消耗所有可用的(物理)内存。
我已经搜索了很多答案,许多帖子中提供的标准解决方案是逐行阅读。但是,即使在逐行读取时也会发生这种行为 - 如下面的(简化示例)代码所示。
with open(file, 'r') as fp:
for line in fp:
pass
我还搜索了如何限制缓冲区/缓存的使用/大小,但找不到任何东西。不断清除缓存(例如,使用sudo echo 3 > /proc/sys/vm/drop_caches
)不是一个可行的选择。
文件大小约为 20GB,物理 RAM 为 16GB,当我运行代码时,可用空间约为 12GB。
如何在不耗尽内存的情况下实际读取大文件?
任何帮助将不胜感激!
解决方案
推荐阅读
- python - Python 中 Lambda 表达式与局部函数的速度测试
- parsing - 如何在jison中编写自定义函数和变量?
- ios - 如何在swift中执行条件segue操作?
- r - 如何在R中循环和列出随机样本
- android - 如何以编程方式获取 Android 上 /data/user/0/com.companyname/files 位置上方的文件夹?
- java - 如何检索按 ID 分组的所有实体?
- javascript - 您如何在 discord.js 中使用带有 awaitMessages 的 set Interval,我想让它按顺序排列
- c++ - 如何判断c++向量中的值类型(int或double)?
- react-native - FacebookAds:新应用不再支持广告请求中的 SDK 版本
- reactjs - 使用 npm 的 MQTT 包在 React 中操作不安全