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

#-*-coding:utf-8-*-
frommultiprocessingimportProcess
fromsingletonimportsingleton
importos
importrandom
@singleton
classDemo21(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#<__main__.Demo21objectat0x1038ab0d0>Info#4354388176rand#29
ProcessID#1305ClassName#Demo21InstanceID#<__main__.Demo21objectat0x1038ab0d0>Info#4354388176rand#36
ProcessID#1306ClassName#Demo22InstanceID#<__main__.Demo22objectat0x1038ab0d0>Info#4354388176rand#16
ProcessID#1307ClassName#Demo22InstanceID#<__main__.Demo22objectat0x1038ab0d0>Info#4354388176rand#10
想知道为什么他们的地址是相同的?求详细解释
偶然的你
浏览 735回答 2
2回答

四季花海

改两句话它们的地址就不一样了:forclsin[Demo21(),Demo21(),Demo22(),Demo22()]:以及this=cls这跟进程无关,是对象和实例的问题,让我想想具体该怎么解释……
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript