这段时间,小编在工作上使用最多的就是多线程,而在这个过程中,难免会需要获取多线程操作完的返回值进行其他操作。经过一番查阅和操作,小编发现可以通过在threading、Thread的基础上进行封装来获取返回值,小编总结了这两种方法,快来看看吧。
第一种:在threading中使用全球变量
在threading中,并没有实现返回值的方法,所以我们可以利用全局变量来实现返回值的获取。
fromthreadingimportThread _sum=0 defcal_sum(begin,end): #声明使用全局变量 global_sum foriinrange(begin,end+1): _sum+=i if__name__=='__main__': t1=Thread(target=cal_sum,args=(1,5)) t2=Thread(target=cal_sum,args=(6,10)) t1.start() t2.start() print(_sum)
第二种:重写Thread类,自定义一个get_result()
fromthreadingimportThread #_sum=0 defcal_sum(begin,end): #global_sum _sum=0 foriinrange(begin,end+1): _sum+=i return_sum """重新定义带返回值的线程类""" classMyThread(Thread): def__init__(self,func,args): super(MyThread,self).__init__() self.func=func self.args=args defrun(self): self.result=self.func(*self.args) defget_result(self): try: returnself.result exceptException: returnNone if__name__=='__main__': t1=MyThread(cal_sum,args=(1,5)) t2=MyThread(cal_sum,args=(6,10)) t1.start() t2.start() t1.join() t2.join() res1=t1.get_result() res2=t2.get_result() print(res1+res2)原文来自:https://www.py.cn
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容