让线程启动的函数,可以有返回值
Thread类本身是不能返回值的,举例:
# 先导入线程模块
from threading import Thread
# 一个简单的函数
def test(num):
flag = 666
flag += num
return flag
# 设置三个线程
t1 = Thread(name='l0', target=test, args=(1000,))
t2 = Thread(name='l1', target=test, args=(2000,))
# 开始线程
res1 = t1.start()
res2 = t2.start()
print(res1, res2)
# 打印出来的结果是None,就是没有返回数据。
但是如果想使用这个线程中函数的返回值做后续操作,那就需要重写一下Thread类,代码如下
# 导入Thread模块
from threading import Thread
# 一个简单的函数
def test(num):
flag = 666
flag += num
return flag
# 重写 类起名为MyThread,继承Thread
class MyThread(Thread):
def __init__(self, func, args):
super(MyThread, self).__init__()
self.func = func
self.args = args
def run(self):
self.result = self.func(*self.args)
# 自定义的返回数据的方法
def get_result(self):
try:
return self.result
except Exception:
return None
t1 = MyThread(func=test, args=(1000,))
t2 = MyThread(func=test, args=(2000,))
t1.start()
t1.join()
res1 = t1.get_result() # 调用t1实例(t1是MyThread创建的实例)的get_result()方法
t2.start()
t2.join()
res2 = t2.get_result()
print(res1, res2)
# 这回就能打印出来了。