我有一個初始化方法,它初始化各種原始和複雜的數據類型和對象。在由multiprocessing.Process產生的每個進程中,我從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
我在init()中初始化了一個dict {'a':'b'},然後在每個進程中修改dict後打印id,但所有進程仍然具有相同的id值他們持有特定於該過程的數據 – sreeraag
您是否嘗試過使用「Pool」? – Eduard