私は、さまざまなプリミティブ型と複合型のデータ型とオブジェクトを初期化するinitメソッドを持っています。マルチプロセスで生成された各プロセスでは、init()メソッドと初期化されたオブジェクトのアドレスから変数を出力しています。 変数のインスタンスが異なりますが、オブジェクトのアドレスは変わりません。ですから、マルチプロセス中に親クラスのメンバーに何が起こったのかを知りたいです。プロセスコール?自己オブジェクトはPythonのマルチプロセッシングで共有されますか?プロセス?
def __init__(self):
self.count = 0
self.db = pymongo.MongoClient()
def consumerManager(self):
for i in range(4):
p = multiprocessing.Process(target = self.consumer, args = (i,))
def consumer(self, i):
while(1):
time.sleep(i)
self.count += 1
print self.count
print os.getpid()
print id(self.db)
起こらない場合、id(self.db)
は、各プロセス内で異なるIDを印刷する必要があり、オブジェクトのディープコピーを行っている場合。これはどのように行われますか?
これはLinux用です – sreeraag
私はdict {'a': 'b'}をinit()で初期化し、各プロセスでdictを変更した後にidを印刷していましたが、彼らはそのプロセスに固有のデータを保持しています – sreeraag
代わりに 'Pool'を使ってみましたか? – Eduard