【发布时间】:2011-08-19 02:36:56
【问题描述】:
我正在使用 Python 多处理为每个进程生成一个临时输出文件。它们的大小可以是几 GB,我做了几十个。需要连接这些临时文件以形成所需的输出,这是被证明是瓶颈(和并行性杀手)的步骤。是否有一个 Linux 工具可以通过修改文件系统元数据而不是实际复制内容来创建连接文件?只要它适用于我可以接受的任何 Linux 系统。但是文件系统特定的解决方案不会有太大帮助。
我没有受过操作系统或 CS 培训,但从理论上讲,似乎应该可以创建一个新的 inode 并从我要复制的文件的 inode 中复制 inode 指针结构,然后取消链接这些 inode。是否有任何实用程序可以做到这一点?考虑到经过深思熟虑的 unix 实用程序过多,我完全期望它会如此,但找不到任何东西。因此,我对 SO 的问题。文件系统位于块设备上,实际上是硬盘,以防此信息很重要。我没有信心自己写这篇文章,因为我以前从未做过任何系统级编程,所以任何指针(指向 C/Python 代码片段)都会很有帮助。
【问题讨论】:
-
@san:作为背景,请您谈谈为什么最终输出必须是单个文件。
-
@aix 它输入到我无法控制的另一段代码。
-
@san:你事先知道每个临时文件的大小吗?
-
@san: 你不能只在下一个进程的标准输入上提供
cat file1 ... fileN |而不是常规文件吗? -
@aix 不,我不知道。它也不是每个进程的固定数字。我可能愿意冒险猜测上限。但是,如果没有它有办法做到这一点,那就太好了。
标签: linux copy parallel-processing cat