簡體   English   中英

GNU Parallel: - line-buffer選項不適用於--pipe

[英]GNU Parallel: --line-buffer option doesn't work with --pipe

我試圖並行化一些需要實時處理的任務,所以我使用了--line-buffer。 我正在處理非常長的字符串,但后來我注意到它有時會達到行長度限制,使command line too long錯誤,所以我決定管它們

但是當我使用--pipe選項時, - line-buffer停止工作
我用更簡單的命令測試,問題仍然存在

# Returns instantly, but pass the data as args
(echo 1; echo 2; sleep 100) | parallel -j1 --lb cat
# Pass the data to STDIN, but only after 100 seconds
(echo 1; echo 2; sleep 100) | parallel -j1 --lb --pipe cat

我在Arch Linux上使用並行20190422

# Pass the data to STDIN, but only after 100 seconds
(echo 1; echo 2; sleep 100) | parallel -j1 --lb --pipe cat

這是由於GNU Parallel默認讀取1 MB。 所以GNU Parallel等待更多輸入。 僅在100秒后STDIN關閉,GNU Parallel獲得EOF。

你可以這樣做:

(echo 1; echo 2; echo 3; sleep 100) | parallel -j1 --block 1 -N1 --lb --pipe 'date;cat'

但是如果線條更長,那么增加--block

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM