使用Python自定義多執行緒,得到所有返回結果組成list
阿新 • • 發佈:2018-11-08
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)