2014-07-07 31 views
3

使用SSH在學校不同節點上運行python腳本。每個節點有8個核心。我使用GNU Screen來從單個進程中分離出來。使用屏幕和Bash進行多處理

是更可取的:屏幕

  1. 運行幾個不同的會話。
  2. 運行單個屏幕進程並在bash終端中使用&

它們是否等同?

我不確定我的實驗是否編碼不良,並且採用過多的時間(很可能)或者我選擇使用1.會大大減慢過程。謝謝!

+0

據我所知,兩種解決方案都是等效的: 選項1只是將命令發送到後臺,選項2將命令保持在每個「虛擬控制檯」的前臺運行。我會在代碼中尋找問題。 – Barranka

+0

定義「合意」。方便?性能?就表現而言,兩者是相同的。如果你的性能很差,那麼你要麼過度訂購機器(或者因爲你一次運行太多或者其他人也在使用它,請參閱頂部),否則你的代碼需要工作。 – Adam

+0

如果這些是交互式程序,您希望分別跟蹤它們的輸出,或者如果您丟失會話,希望它們繼續,則屏幕是更好的選擇。 – tdelaney

回答

1

隨着bash我想象你正在做這樣的事情(假設/home正在網絡安裝):

#!/bin/bash  

for i in {1..$NUM_NODES} 
do 
    ssh node$i 'python /home/ryan/my_script.py' & 
done 

啓動這個腳本從一個單一的screen後面將正常工作。啓動多個會話screen不會提高性能,但增加了啓動多個屏幕的額外複雜性。

請記住,有很多更好的方式來分佈整個集羣的負載(例如,如果別人正在用盡所有node7,你需要一種方法來檢測並將你的工作發送到別處)。與我一起工作的大多數羣集都安裝了TorqueMauiqsub命令。我建議給這些看看。

1

我會認爲他們差不多。我更喜歡屏幕只是因爲我更容易管理它。根據腳本的使用情況,這也可能對處理時間產生一些影響。