我正在通過GNU Parallel totorial。在「多個參數」一節中,有下面的例子(注:num30000是有數字1的文本文件30000上連續線):爲什麼5個作業在本教程中使用GNU Parallel --jobs 4選項運行?
爲了更好的並行GNU並行可以分發所有的參數滿足文件結束時的並行作業。
並行運行4個就業機會將參數的最後一行分成共導致5個職位的4個作業:
cat num30000 | parallel --jobs 4 -m echo | wc -l
輸出:
5
我的問題是:爲什麼我們預計有5個工作嗎?我明顯錯過了一點,雖然我不知道它是否重要。我預計4個作業,因爲30,000整除4.我決定跑後發佈此問題如下:
cat num30000 | parallel --jobs 4 -m echo | colrm 12
導致:
1 2 3 4 5 6
23696 23697
25273 25274
26850 26851
28427 28428
這看起來對我來說,第一echo
命令通過了最初的23,695個論點。然後,剩餘的部分被分成4個工作,參數數量分別爲1577,1577,1577和1574.我是否誤解了並行調用應該做的事情?謝謝!
我很高興支付罰款,我的意思是價格:)但是,我可能仍然沒有足夠的理解這樣做。這裏是一個嘗試:「並行請求」4個作業將最後一行參數分成4個作業,因爲'cat num30000 | parallel -m echo'創建兩行參數,第一個作業從第一個最大長度開始(第23695行),第二行有EOF標記,因此GNU Parallel將這些參數在接下來的4個作業中儘可能均勻分佈,總共有5個作業......與命令head -n 20000 num30000 | parallel --jobs 4 -m echo | wc -l'「 –
我的newby混淆的一部分來自於不理解stdin管道有EOF。我也不知道如何將stdin的所有行(不僅僅是具有EOF的行)平行分割成4個作業。感謝您在GNU Parallel上的出色工作! –