我有一个程序可以生成很多(太字节)的输出并将其发送到stdout.
我想分割输出并与另一个程序的一堆实例并行处理它.它可以以任何方式分发,只要线条保持完整即可.
Parallel可以执行此操作,但它需要固定数量的行并在此之后重新启动过滤器进程:
./relgen | parallel -l 100000 -j 32 --spreadstdin ./filter
Run Code Online (Sandbox Code Playgroud)
有没有办法保持一定数量的进程运行并在它们之间分配数据?
我有很多巨大的文本文件,需要以尽可能高的比率进行压缩。压缩速度可能会很慢,只要解压速度合理即可。
这些文件中的每一行都包含一个数据集,它们可以按任意顺序存储。
与此问题类似的问题: 排序文件以优化压缩效率
但对我来说压缩速度不是问题。是否有现成的工具可以将相似的线条组合在一起?或者也许只是我可以实现的算法?
单独排序会带来一些改进,但我怀疑还有更多可能。
每个文件长约 6 亿行,每个文件约 40 字节,总共 24GB。使用 xz 压缩到 ~10GB