提问人:YoussefMabrouk 提问时间:8/19/2023 最后编辑:YoussefMabrouk 更新时间:9/2/2023 访问量:59
在 Python 中并行读取多个文件?
Reading many files in parallel in Python?
问:
我正在尝试对总大小为 3 Tb 的数据运行 Python 脚本来计算非常简单的统计数据。数据分为 3000 个目录,每个目录包含一个大小为 1Gb(“.trr”格式)的压缩文件。
为了加载数据,我使用用 C 语言实现的库(称为 mdanalysis)。我正在具有 64 个 CPU 内核和 250 Gb 内存的节点上运行分析。我使用 Joblib 并行遍历目录,我期望并行处理 64 个文件,因为这对于内存来说仍然很好。
但是当我通过 htop 执行和监控 CPU 使用率时,我只看到 10 个 CPU 内核填满了勉强 50%,这表明我的脚本是一场灾难。您能否提出脚本未按应有的方式执行的任何原因?除了有限的内存(这里不是这种情况)之外,我不明白为什么没有使用 CPU。通过 htop,我可以看到大多数进程都处于状态 D。
更新:我已经使用cProfile分析了我的代码,我可以看到大部分时间都花在{'_thread.lock'对象的'获取'方法}中。这让我感到困惑,因为我已经执行了独立的进程,而且在我的理解中,这不涉及线程锁减慢代码速度。线程锁是否显示是因为我正在读取文件?这是 I/O 限制的提示吗?
我正在研究一个最小的可重复示例(由于需要数据,这并不容易)。
答: 暂无答案
评论