遠端機器上的並行 Python 腳本
與此執行緒類似,我有一台具有 8 個核心的遠端電腦,我想使用它來並行執行腳本(每個核心一次 1 個腳本)。
但是,我沒有多個 bash 腳本,而是一個我想使用不同輸入執行的 Python3 腳本。我試過了,
parallel python3 -c main.py input*
但沒有任何效果。parallel -j 100% python3 -c main.py ::: input*``parallel python3 main.py input*
確切的錯誤資訊是:
parallel: Error: -g has been retired. Use --group. parallel: Error: -B has been retired. Use --bf. parallel: Error: -T has been retired. Use --tty. parallel: Error: -U has been retired. Use --er. parallel: Error: -W has been retired. Use --wd. parallel: Error: -Y has been retired. Use --shebang. parallel: Error: -H has been retired. Use --halt. parallel: Error: --tollef has been retired. Use -u -q --arg-sep -- and --load for -l.
我不明白這與我的輸入有何關係。我沒有使用任何這些選項。
我對 Unix 還很陌生,沒有經驗,我自己或Google搜尋都無法讓它工作。任何幫助表示讚賞。我必須編寫一個 shell 腳本來幫助我嗎?
問題實際上在於如何在遠端機器上安裝並行(執行最新的 Ubuntu)。我遇到了一個解決我的問題的執行緒
sudo rm /etc/parallel/config
:在 Ubuntu 上安裝後執行以擺脫導致我的錯誤消息的配置。我用來並行執行具有不同輸入的 python 腳本的命令是:
parallel -j 100% python3 main.py ::: inputs*
不過,感謝所有幫助的人!
您可以通過將每個腳本分配給特定核心來做到這一點,
taskset
首先您需要使用ps aux | grep <scriptname, input>
或使用獲取腳本的程序ID,pgrep -f <scriptname, input>
然後將其傳遞給taskset
這樣taskset -pc 0 $pid
的,這會將程序分配給核心1。有關taskset
http://的更多資訊linuxcommand.org/man_pages/taskset1.html