import multiprocessing as mp
class Job:
def __init__(self,name):
self.name=name
class A:
def __init__(self,x):
self.x=x
def run(self,job):
self.x+=1
print(id(self.x),self.x,job.name)
def mul_process_test(self):
j1=Job('hello')
j2=Job('world')
p1=mp.Process(target=self.run,args=(j1,))
p2=mp.Process(target=self.run,args=(j2,))
p1.start()
p2.start()
p1.join()
p2.join()
if __name__ =='__main__':
a=A(1)
a.mul_process_test()
print(id(a.x),a.x)
Результат приведенного выше кода:
10919360 2 hello
10919360 2 world
10919328 1
Кажется, self.x
в двух процессах имеет одинаковый идентификатор, 10919360 (что не имеет смысла для меня), ноиметь другой идентификатор от основного процесса (что имеет смысл для меня).Я использую python3.5 в Linux, как говорится в документе, метод запуска по умолчанию использует способ, подобный форку, чтобы начать новый процесс.Мне было интересно, почему id self.x
в двух процессах одинаковы.Есть ли что-то общее для трех процессов (основной процесс и два процесса, запущенные с mp.Process
)?