〜のようにこれスレッド、スクリプトを並列に実行するために使用したい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に初めて触れた経験がないので、単独でもインターネット検索でもUnixを動作させることはできません。助けてくれてありがとう。この問題を解決するには、シェルスクリプトを作成する必要がありますか?
答え1
問題は、実際にリモートシステム(最新のUbuntuを実行)にパラレルをインストールする方法です。一人に会ったワイヤー私の問題を解決しました。sudo rm /etc/parallel/config
Ubuntuにインストールした後、実行してエラーメッセージを表示した構成を削除しました。
他の入力を使用してPythonスクリプトを並列に実行するために使用するコマンドは次のとおりです。parallel -j 100% python3 main.py ::: inputs*
それでも助けてくれた皆さんに感謝します!
答え2
各スクリプトを特定のコアに割り当てることでこれを実行できます。まず、を使用してスクリプトのプロセスIDを取得する必要がtaskset
あります。その後、これをlike thisに渡すと、プロセスはコア1に割り当てられます。詳しくはps aux | grep <scriptname, input>
pgrep -f <scriptname, input>
taskset
taskset -pc 0 $pid
taskset
http://linuxcommand.org/man_pages/tasksset1.html
答え3
エラーメッセージがどこに表示されるのかわかりません。一般的に構文は次のとおりです。
parallel -j 100% python3 -c main.py ::: input*
たとえば、ファイルが2つしかない場合は、inputa, inputb
並列に実行されます。
python3 -c main.py inputa
python3 -c main.py inputb
8個のCPUコアと10個のファイルがある場合、input*
この-j 100%
パラメータを使用すると、最初は8個の命令のみが並列に実行されます。 1つのコマンドが完了すると、10個のコマンドがすべて完了するまで、次のコマンドが実行されます。通常のLinuxスケジューリングを使用して、各コマンドを別々のCPUに割り当てます。