GNU Parallelは、開始する前にn個のタスクを待ちます。

GNU Parallelは、開始する前にn個のタスクを待ちます。

私はスクリプトでGNUパラレルを試してみましたが、-jX X操作の後にのみ出力が開始されることがわかりました。

# Only spawns cat after 100 seconds
(echo a; sleep 100) | parallel -j1 --lb cat

# Starts instantly
(echo a; echo a; sleep 100) | parallel -j1 --lb cat

最初のジョブは他のジョブの前に開始する必要があります(他のジョブを並列パイプラインとして定義し、出力を別のスクリプトにパイピングするため)。しかし、並列はさらに3つの作業を待っています。

このパターンを変更する方法はありますか?

ベストアンサー1

20181222以降にアップグレードしてください。

# Spawns a instantly
(echo a; sleep 100) | parallel -j1 --lb cat

# Starts a and b instantly, outputs a immediately, b after 100 sec
(echo a; echo b; sleep 100) | parallel -j1 --lb cat

# Starts a and b instantly, outputs a and b immediately (but output may be mixed)
(echo a; echo b; sleep 100) | parallel -j1 --lb cat

おすすめ記事