import threading
import time
"""重新定义带返回值的线程类"""
class MyThread(threading.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
"""测试函数,计算两个数之和"""
def fun_1(a, b):
time.sleep(10)
return a + b
"""测试函数,计算两个数之差"""
def fun_2(a,b):
time.sleep(10)
return a - b
li = []
for i in range(2):
t = MyThread(eval("fun_"+str(i+1)), args=(9,1))
li.append(t)
t.start()
res=[]
for t in li:
t.join() # 使用join,防止主线程比子线程跑的快,会拿不到结果
res.append(t.get_result())
print(res)