import threading
import time
"""
可以通过构建线程类,实现获取使用多线程函数的结果
"""
class MyThread(threading.Thread):
def __init__(self, fun, *args):
threading.Thread.__init__(self)
self.fun = fun
self.args = args
# self.res = self.fun(*self.args)
def run(self) -> None:
self.res = self.fun(*self.args)
# self.res = res
# pass
def get_result(self):
return self.res
def sum(x, y):
# time.sleep(3)
sum = x + y
# time.sleep(3)
return sum
def avg(x, y):
# print((x + y)/2)
time.sleep(2)
return (x + y)/2
if __name__ == '__main__':
fun_list = [sum, avg]
threads = []
for i in range(2):
t = MyThread(fun_list[i], 1, 2)
threads.append(t)
t.start()
# t.join()
# print(t.get_result())
for i in threads:
i.join() # join 在这里可以保证子线程先执行完毕,
print(i.get_result())
join 和 互斥锁的作用的是解决全局变量引起的冲突
主线程守护(deamon=True)是守护主线程,一旦主线线程结束,子线程立即结束, 正常情况下, 主线程会等待所有子线程结束之后,才会结束