#-*-coding:utf-8-*-frommultiprocessingimportProcessfromsingletonimportsingletonimportosimportrandom@singletonclassDemo21(object):def__init__(self):self.name='Demo21'self.rand=random.randint(1,100)classDemo22(object):def__init__(self):self.name='Demo22'self.rand=random.randint(1,100)defcreate_class(cls):this=cls()print"ProcessID#{}ClassName#{}InstanceID#{}Info#{}rand#{}".\format(os.getpid(),this.name,this,id(this),this.rand)if__name__=='__main__':pool=[]forclsin[Demo21,Demo21,Demo22,Demo22]:p=Process(target=create_class,args=(cls,))pool.append(p)forpinpool:p.start()forpinpool:p.join()输出ProcessID#1304ClassName#Demo21InstanceID#Info#4354388176rand#29ProcessID#1305ClassName#Demo21InstanceID#Info#4354388176rand#36ProcessID#1306ClassName#Demo22InstanceID#Info#4354388176rand#16ProcessID#1307ClassName#Demo22InstanceID#Info#4354388176rand#10想知道为什么他们的地址是相同的?求详细解释
2 回答
四季花海
TA贡献1811条经验 获得超5个赞
改两句话它们的地址就不一样了:forclsin[Demo21(),Demo21(),Demo22(),Demo22()]:以及this=cls这跟进程无关,是对象和实例的问题,让我想想具体该怎么解释……
添加回答
举报
0/150
提交
取消