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