首页 > 解决方案 > 使用 Python 多线程顺序读取和写入核心文件

问题描述

总体目标:我想在不适合内存的数据集上训练一个 pytorch 模型。

现在忘记我谈到了 pytorch,它归结为:从内核或内存映射中读取和写入一个大文件。

我找到了很多库,但我找不到一个允许我进行多线程顺序读写的库。我想要做的是让多个线程附加到文件/数据帧(顺序无关紧要,无论如何都应该为下游应用程序改组)。然后在阅读时我只需要顺序阅读(没有切片,没有索引),但应该能够再次提供多个线程。

我发现/想出了以下解决方案:

他们都支持核心读取,这很好,但我需要先以特定的文件格式(写入)获取它——我在这里缺少什么?

看起来多线程编写是一个难题。但是即使增量写入单线程,但多线程读取已经不错了,但似乎没有库支持呢?

标签: pythonnumpydaskpython-xarrayjoblib

解决方案


多线程顺序写入可能容易出错。大多数系统通常更喜欢 Parquet 之类的格式,这些格式允许它们将每个数据块写入不同的文件。

如果您想进行实际的并行顺序写入,您将不得不进行某种锁定,并且您可能在更大的一体机系统方面靠自己。


推荐阅读