プログラムがまだ実行されていない場合、ワークセットはどのようにPIDを生成しますか?

プログラムがまだ実行されていない場合、ワークセットはどのようにPIDを生成しますか?

処理能力をマシンのシングルコアに制限したかったので、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

仕組みは次のとおりです。

  1. シェル(または他の呼び出しプログラム)は新しいプロセス(fork)実装する(execvetaskset -c 0 python main.py
  2. 実行中のプロセスはtasksetコア設定を自分に適用します。
  3. プロセスは同じプロセスで(再び)実行されますexecvepython main.py

これは異なるプロセス固有の設定を実行する方法です。シェルセッションの環境変数を設定するenv代わりに(使用)個々のプロセスのexport環境変数を設定(たとえば使用)する代わりに、niceリダイレクト(通常はシェル構文で実行)を使用します。別のユーティリティプログラム)など

関連情報