2016-08-02 16 views
0

私はPythonでさまざまなプロセスを扱おうとしていますが、特定のインスタンスのPIDを取得するのが難しいです。Python - インスタンスのプロセスIDを取得する

例えば、私は1つのクラスでmainCarインスタンスを送信しています:倉庫クラスで

warehouse = Warehouse() 
mainCar = Car().start() 
warehouse.add(mainCar) 

を、私はmainCar変数をrecivingと私はどのようにそのPID

を知りたいんですmainCar変数を使用してプロセスIDを取得しますか?私はこの変数を別のクラスに渡しています。この変数のプロセスIDは、os.getpid()が与えるものとは異なります。

ありがとうございます!

+1

Car()。start()はサブプロセスを生成しますか? – Owen

+0

マルチプロセッシングのインスタンスには、 'pid'という属性があります。プロセスが始まる前にはNoneです。その後は値があります。 –

+0

"この変数のプロセスIDは、os.getpid()が私に与えるものとは異なるでしょう:なぜそれが違うのですか?どうして知っていますか? – Evert

答えて

0

私はあなたが根本的に何が起こっているのか誤解していると思います。オブジェクトはのPIDがないので、あなたの質問はあまり意味がありません。マルチプロセッシングモジュールを使用して複数のプロセスを生成し、キューにオブジェクトを渡したとしても、オブジェクトを自動的に作成したプロセスのPIDを示すPython関数はありません。

あなたは、発信元のPIDを追跡するために、あなたのクラスにこのような何かを追加することができます。

class PID_Tracked(object): 
    def __init__(self) 
     self.originating_PID = os.getpid() 

しかし、あなたはこのデータを手動で保存しない限り、オブジェクトとそれらを作成したプロセスのPIDとのゼロ関連があります。

これ以外の例外は、マルチプロセッシングモジュールを使用している場合です。そのモジュール内のいくつかのクラスは、生成されたプロセスを追跡するためのPIDを提供します。しかし、あなたの質問には、(今のところ)マルチプロセッシングを使用していることは何も示されていないので、私はそれの議論を除外しました。

+0

ありがとうございます@ skrrgwasme、私の質問に答えた!私は今、論理を理解しています。私はPIDを得る方法があると思った。 – ForeverLearning

関連する問題