有小伙伴在后台给小编留言,希望出这一起关于多线程返回值的问题,于是,小编整理了很多内容,最终给大家呈现多种方式,希望大家可以在不同的场景应用时,能有不同的效果,一起来看下吧~
Python 从多线程中返回值,有多种方法:
1、常见的有写一个自己的多线程类,写一个方法返回。
2、可以设置一个全局的队列返回值。
3、也可以用multiprocessing.pool.ThreadPool 。
下面写一个类从线程中返回值
#coding:utf-8 importtime fromthreadingimportThread deffoo(number): time.sleep(20) returnnumber classMyThread(Thread): def__init__(self,number): Thread.__init__(self) self.number=number defrun(self): self.result=foo(self.number) defget_result(self): returnself.result thd1=MyThread(3) thd2=MyThread(5) thd1.start() thd2.start() thd1.join() thd2.join() printthd1.get_result() printthd2.get_result()
另外,自带的Thread 实例并没有返回结果的方法. 需要自己实现,自己定义一个类:
classCustomTask: def__init__(self): self._result=None defrun(self,*args,**kwargs): #你的代码,你用来进行多线程 result=... self._result=result defget_result(self): returnself._result 这里自己实现了`get_result`方法。 使用 importthreading ct=CustomTask() t=threading.Thread(target=ct.run,args=(...)) t.start() #结束之后 result=ct.get_result()
大家可以根据以上内容,了解自己的需求,在适合的场景里去使用以上,相信大家的python进程更充实哦~如果还想知道更多的python知识,可以到python学习网进行查询。