当前流程:
- 我有一个
tar.gz
文件。(实际上,我有大约 2000 个,但那是另一回事了)。 - 我创建一个临时目录,提取
tar.gz
文件,显示 100,000 个小文件(每个大约 600 字节)。 - 对于每个文件,我将它放入一个处理程序中,将该循环通过管道传输到另一个分析程序中,然后保存结果。
我正在使用的机器上的临时空间几乎不能同时处理其中一个进程,更不用说它们默认发送的 16 个(超线程双四核)。我正在寻找一种方法来执行此过程而无需保存到磁盘。我相信单独拉取文件的性能损失tar -xf $file -O <targetname>
会令人望而却步,但这可能是我所坚持的。
有没有办法做到这一点?
编辑:由于两个人已经犯了这个错误,我要澄清一下:
- 每个文件代表一个时间点。
- 每个文件都单独处理。
- 一旦处理(在这种情况下是傅里叶分析的变体),每个都给出一行输出。
- 这个输出可以结合起来做一些事情,比如跨时间的自相关。
EDIT2:实际代码:
for f in posns/*; do
~/data_analysis/intermediate_scattering_function < "$f"
done | ~/data_analysis/complex_autocorrelation.awk limit=1000 > inter_autocorr.txt