gpt4 book ai didi

python - 使用 Python 顺序读取和写入核心文件的多线程

转载 作者:太空宇宙 更新时间:2023-11-04 06:40:04 25 4
gpt4 key购买 nike

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

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

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

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

  • csv:不是一个选项,因为存储 float 会导致精度损失(处理编码和转义也很糟糕)
  • numpy.memmep : 您需要提前知道数组的大小,无论是对于读取还是写入,追加似乎都不简单。
  • dask :我找不到附加到数据框的方法,它总是在附加时创建一个新数据框,而且新数据框似乎没有文件支持。这看起来很适合阅读,但没有记录创建新的核心数据框。
  • xarray :再次没有关于如何写入文件支持的数据框的文档,而是文档说明 重要的是要注意,当您修改数据集的值时,即使是链接到磁盘上的文件的值,也只有内存中的副本您正在修改 xarray 中的操作:磁盘上的原始文件从未被触及。 所以这似乎不可能?
  • joblib : 同样的故事,阅读是,迭代写作不是。
  • blaze : 也没有行追加
  • vaex : 没有行追加。为什么‽

很高兴他们都支持脱离核心阅读,但我需要先以特定的文件格式获取它(写作)——我在这里错过了什么?

看来多线程写是个难题。不过就算单线程增量写,多线程读也已经不错了,但是好像没有库支持?

最佳答案

多线程顺序写入很容易出错。大多数系统通常更喜欢像 Parquet 这样的格式,这种格式允许它们将每个数据 block 写入不同的文件。

如果您想进行实际的并行顺序写入,您将不得不进行某种锁定,并且您可能需要依靠自己来构建更大的一体化系统。

关于python - 使用 Python 顺序读取和写入核心文件的多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57494889/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com