2015-02-04 62 views
2

我試圖找到一種方法來確定parallel中當前使用的命令「插槽」或​​「核心」作業。例如,我們都看到了如何parallel分配命令類似的圖像:GNU並行:如何確定您使用的作業「插槽」?

enter image description here

如果我想知道某個過程是哪一列,我怎麼知道?

我的具體問題說明:如果將-j 4設置爲只允許4個作業同時運行,我想動態地知道命令採用的是哪個插槽,1 2 3或4.問題是我有一些命令無法運行並行,但如果我知道我在哪個插槽中跑步,我就很好。

進一步的例子,說我有這些命令我並行:

command resource1 file1.rb 
command resource2 file2.rb 
command resource3 file3.rb 
command resource4 file4.rb 
command resource1 file5.rb 
command resource2 file6.rb 
command resource3 file7.rb 
command resource4 file8.rb 

只需要一個命令可以同時使用每個資源。說我把這些命令parallel像往常一樣4點的作業,在時間和作業3點結束了和它關係到隊列中的下一個,我現在有這些並行運行:

command resource1 file1.rb 
command resource2 file2.rb 
command resource3 file3.rb 
command resource1 file5.rb 

通知resource1正在由兩個命令使用,不好。我需要的是一個環境變量或有事要告訴你下一個命令使用的資源數量4,從而使並行命令如下:

command resource1 file1.rb 
command resource2 file2.rb 
command resource3 file3.rb 
command resource4 file5.rb 

我想過使用文件系統或其他一些類型的外部有哪些資源正在使用的跡象,但我用平行過程來計算,這條路線可能存在競爭條件。

我已經找遍了,任何幫助非常感謝!

回答

3

我相信你正在尋找{%}:

parallel -j4 command ressource{%} file{}.rb ::: {1..8} 
+0

哇,這看起來是它!不能相信我錯過了這一點。非常感謝你! –

相關問題