带参数的Python子类化过程
发布时间:2020-12-20 11:41:04 所属栏目:Python 来源:网络整理
导读:我正在尝试创建一个对象,但作为一个新进程.我正在关注 this guide并想出了这段代码. import multiprocessing as mp import timeclass My_class(mp.Process): def run(self): print self.name,"created" time.sleep(10) print self.name,"exiting" self.x() d
我正在尝试创建一个对象,但作为一个新进程.我正在关注
this guide并想出了这段代码.
import multiprocessing as mp import time class My_class(mp.Process): def run(self): print self.name,"created" time.sleep(10) print self.name,"exiting" self.x() def x(self): print self.name,"X" if __name__ == '__main__': print 'main started' p1=My_class() p2=My_class() p1.start() p2.start() print 'main exited' 但是在这里我无法将参数传递给对象.我搜索但没有找到.它不像普通的多进程,我们会做类似的事情: p1 = multiprocessing.Process(target=My_class,args=('p1',10,)) 将参数传递给新进程. import multiprocessing as mp import time class My_class(mp.Process): my_vars={'name':'','num':0} def run(self): self.name=My_class.my_vars['name'] self.num=My_class.my_vars['num'] print self.name,"created and waiting for",str(self.num),"seconds" time.sleep(self.num) print self.name,"X" if __name__ == '__main__': print 'main started' p1=My_class() p2=My_class() My_class.my_vars['name']='p1' My_class.my_vars['num']=20 p1.start() My_class.my_vars['name']='p2' My_class.my_vars['num']=10 p2.start() print 'main exited' 哪个工作正常.但我想对于像大型列表或对象这样的复杂参数可能会失败. 有没有其他方法来传递参数? 解决方法
你可以为My_class实现一个__init__方法,它接受你想要提供的两个参数:
import multiprocessing as mp import time class My_class(mp.Process): def __init__(self,name,num): super(My_class,self).__init__() self.name = name self.num = num def run(self): print self.name,"X" if __name__ == '__main__': print 'main started' p1=My_class('p1',20) p2=My_class('p2',10) p1.start() p2.start() print 'main exited' 您只需要确保在__init__方法中调用super(My_class,self).__ init __(),以便将您的类正确初始化为Process子类. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |