我正在 WSL 上使用来自
apt install parallel
的并行。
我希望了解解释的机制
具体问题
seq 10 | parallel -j 1 'sleep 1; echo {}' | parallel -j 4 'echo "prefix" {}'
seq 10 | parallel -j 4 'sleep 1; echo {}' | parallel -j 1 'echo "prefix" {}'
seq 10 | parallel -j 4 'sleep 1; echo {} | echo "prefix" {}'
为什么选项 1 等待 6 秒,开始每秒打印 1 条,直到前缀 5,然后从 6 到 10 一次性转储所有内容?
为什么选项2等待1秒,然后在接下来的3秒内输出1-3、4-7、8-10?
为什么选项3等待1秒,然后在接下来的3秒内输出1-4、5-8、9-10?
一般问题
以下设计有什么不同
我目前没有具体的用例,但试图了解在 3 种设计中做出决定时所涉及的考虑因素。
您遇到了一些蹩脚的设计,现已得到改进。
今天的输出延迟了一项作业(即作业 1 的输出在作业 2 完成时打印)。
$ seq 10 | parallel -j 1 'sleep 1; echo {}' | parallel-20210922 -j 4 'echo "prefix" {}' | timestamp -d
4.445 prefix 1
4.451 prefix 2
4.456 prefix 3
5.552 prefix 4
6.564 prefix 5
7.686 prefix 6
8.817 prefix 7
9.948 prefix 8
11.082 prefix 9
11.086 prefix 10
$ seq 10 | parallel -j 1 'sleep 1; echo {}' | parallel-20211022 -j 4 'echo "prefix" {}' | timestamp -d
2.199 prefix 1
3.295 prefix 2
4.409 prefix 3
5.527 prefix 4
6.541 prefix 5
7.663 prefix 6
8.793 prefix 7
9.924 prefix 8
11.066 prefix 9
11.070 prefix 10