python获取线程返回值,python 异步线程 结果收集
本文主要介绍Python如何获得多线程返回结果,有很好的参考价值。希望对大家有帮助。如有错误或不足之处,请不吝赐教。
目录
Python多线程获取多线程返回结果Python多线程实现
Python获取多线程返回结果
在Python的多线程中,有时我们需要每个线程返回的结果。
但是经过我的多次尝试和网上的各种博客,在Python3中是不可能在单线程中得到返回的结果的,所以我们需要定义一个类来实现这个过程。
这个类的定义如下:
类MyThread(线程。螺纹):
def __init__(self,func,args=()):
超级(MyThread,self)。__init__()
self.func=func
self.args=args
定义运行(自身):
self . result=self . func(* self . args)
def get_result(自身):
尝试:
返回自我结果
除了例外:
不返回
然后我们通过调用这个类中的函数get_result()就可以得到每个线程返回的结果。下面是一个测试的例子。多线程调用一个加法函数后,通过实验就有可能得到所有线程返回的结果。
导入线程
类MyThread(线程。螺纹):
def __init__(self,func,args=()):
超级(MyThread,self)。__init__()
self.func=func
self.args=args
定义运行(自身):
self . result=self . func(* self . args)
def get_result(自身):
尝试:
返回自我结果
除了例外:
不返回
定义添加(编号):
结果=数字5
回送结果
if __name__==__main__:
数据=[]
线程=[]
nums=[1,2,3]
对于nums:中的num
t=MyThread(add,args=(num,))
threads.append
启动()
对于线程:中的测试
t.join()
data.append(t.get_result())
打印(数据)
Python多线程实现
从线程导入线程
定义函数():
对于范围(100):内的I
打印( func ,I)
if __name__==__main__:
t=线程(target=func)
启动()
对于范围(100):内的I
打印(“主”,I)
线程池:
一下子启动一些线程,我们用户直接向线程池提交任务,线程任务的调度交给线程池。从concurrent.futures导入线程池执行器
定义函数(名称):
对于范围(20):内的I
打印(姓名,I)
if __name__==__main__:
#创建一个线程池
使用ThreadPoolExecutor(10)作为t:
对于范围(10):内的I
T.submit(func,name=f thread {i} )
Print(over)#在执行这行代码之前,等待所有线程执行。
以上个人经验,希望给你一个参考,也希望你能支持盛行的IT软件开发工作室。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。