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知识,可以到python学习网进行查询。