私はCentos 7とPython 3.6を実行しています。
マルチスレッドを使用するPythonスクリプトがあります。
スクリプトで生成されたすべてのステップに対して良い値を再調整または変更したいと思います。
現在、次のコマンドを使用して親プロセスの正しい値を変更できます。
while read -r pid; do
renice -n -20 "$pid" ; done < <(ps -o pid= -C "python /path/script.py")
次に、htopを使用してスクリプトプロセスの状態を表示すると、親プロセスのみが更新されるか、「reniced」値が表示されます。
「サブ」プロセスはすべて標準の良好な値を表示します(htopのF7キーを使用して手動で変更できます)。
こことオンラインでいくつかの同様の質問を見つけて、提案されたソリューションを試しましたが、Centos 7では動作しないようです。
誰もが親と子のプロセスを同時に再開できるように、上記のコマンドを変更する方法について正しい方向を教えてください。または、使用する必要があるより良い解決策がある場合は、喜んで試してみましょう。 。
***このスクリプトはCentos 7ホストのCentos 7 Dockerコンテナで実行されます。 Docker の権限の問題により、コンテナで目的の値でスクリプトを起動できないため、ホスト コンピュータでスクリプト プロセスを再起動し、上記のプロセスを使用してこれを行うことができます。
ベストアンサー1
最も簡単な方法は、reniceを介して基本スクリプトを呼び出すことです。
メインプロセスのすべてのサブプロセスを見つける必要があります。ループは必要なく、renice
複数のパラメータを受け入れます。
renice -n -20 $(ps --ppid $(ps -o pid= -C "python /path/script.py") --no-headers -o pid)
または読みやすくなります。
PPID=$(ps -o pid= -C "python /path/script.py")
renice -n -20 $(ps --ppid $PPID --no-headers -o pid)