在Linux上快速连接多个文件

在Linux上快速连接多个文件,第1张

概述我使用 Python多处理来生成每个进程的临时输出文件.它们可以是几个GB的大小,我做了几十个.这些临时文件需要相互结合以形成所需的输出,这是证明是瓶颈的步骤(和并行杀手).是否有一个Linux工具,将通过修改文件系统元数据而不是实际复制内容来创建并行文件?只要它适用于我可以接受的任何Linux系统.但是文件系统的具体解决方案不会有太大的帮助. 我不是 *** 作系统或CS训练,但在理论上看来,似乎应该可 我使用 Python多处理来生成每个进程的临时输出文件.它们可以是几个GB的大小,我做了几十个.这些临时文件需要相互结合以形成所需的输出,这是证明是瓶颈的步骤(和并行杀手).是否有一个linux工具,将通过修改文件系统元数据而不是实际复制内容来创建并行文件?只要它适用于我可以接受的任何linux系统.但是文件系统的具体解决方案不会有太大的帮助.

我不是 *** 作系统或CS训练,但在理论上看来,似乎应该可以创建一个新的inode并从我要复制的文件的inode中复制inode指针结构,然后取消链接这些inode.有没有什么实用程序会这样做?鉴于很多思想上的unix实用程序的滥用,我完全期望它是,但找不到任何东西.所以我的这个问题.文件系统在块设备上,实际上是硬盘,以防该信息重要.我没有信心自己写这个,因为我从来没有做过任何系统级编程,所以任何指针(对C / Python代码snipppets)将是非常有帮助的.

解决方法 即使有这样的工具,只有在最后一个文件之外的文件才有效
被保证具有大小是文件系统块的倍数
尺寸.

如果您控制数据如何写入临时文件,并且您知道
每个人将会有多大,您可以做以下 *** 作

>在开始多处理之前,创建最终的输出文件并增长
它到最后的大小
fseek()ing
到最后,这将创造一个
sparse file.
>开始多处理,将每个进程的FD和偏移量递送到其中
文件的特定片段.

这样,进程将协同填充单个输出文件,
消除了以后将它们聚集在一起的需要.

编辑

如果你无法预测单个文件的大小,而是消费者的
最终文件可以使用顺序(而不是随机访问)输入,你可以
Feed cat tmpfile1 .. tmpfileN给消费者,无论是在stdin上

cat tmpfile1 ... tmpfileN | consumer

或通过命名管道(使用bash的Process Substitution):

consumer <(cat tmpfile1 ... tmpfileN)
总结

以上是内存溢出为你收集整理的在Linux上快速连接多个文件全部内容,希望文章能够帮你解决在Linux上快速连接多个文件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1045376.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存