如何使用Python获取多线程返回值?

图片2.png

这段时间,小编在工作上使用最多的就是多线程,而在这个过程中,难免会需要获取多线程操作完的返回值进行其他操作。经过一番查阅和操作,小编发现可以通过在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
喜欢就支持一下吧
点赞13 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容