Shell-Script

遠端機器上的並行 Python 腳本

  • January 11, 2017

執行緒類似,我有一台具有 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

引用自:https://unix.stackexchange.com/questions/327285