python获取线程返回值,python 异步线程 结果收集

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: