処理能力をマシンのシングルコアに制限したかったので、taskset
以下のようにシングルコア(Core 0など)を設定することが役に立つことがわかりました(提供)。回答):
taskset -c 0 -p 45678
問題は、私のプログラムがまだ実行されていない場合、ここでprocess_id pidをどのように確認できるかということです。この場合、Linuxで選択したランダムプロセスIDを設定できますか45678
?それでは、シェルスクリプトで次のことを実行できますか?
#!/bin/sh
# Set the processing unit
taskset -c 0 -p 45678
# run python script
python main.py
答え1
taskset
将来のプロセスの履歴設定を呼び出すことはできません。この呼び出し方法は、taskset
現在実行中のプロセスにのみ適用されます。
新しいプロセスをコアに固定するには、ダイレクトtaskset
モードを呼び出します。電話してtaskset
実行するプログラムを教えてください。
taskset -c 0 python main.py
仕組みは次のとおりです。
- シェル(または他の呼び出しプログラム)は新しいプロセス(
fork
)実装する(execve
)taskset -c 0 python main.py
。 - 実行中のプロセスは
taskset
コア設定を自分に適用します。 - プロセスは同じプロセスで(再び)実行されます
execve
。python main.py
これは異なるプロセス固有の設定を実行する方法です。シェルセッションの環境変数を設定するenv
代わりに(使用)個々のプロセスのexport
環境変数を設定(たとえば使用)する代わりに、nice
リダイレクト(通常はシェル構文で実行)を使用します。別のユーティリティプログラム)など