为了账号安全,请及时绑定邮箱和手机立即绑定

Python不同进程的类的实例id为什么一样的?

Python不同进程的类的实例id为什么一样的?

偶然的你 2019-04-19 16:30:02
#-*-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
这跟进程无关,是对象和实例的问题,让我想想具体该怎么解释……
                            
查看完整回答
反对 回复 2019-04-19
  • 2 回答
  • 0 关注
  • 734 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信