1. 程式人生 > >使用Python自定義多執行緒,得到所有返回結果組成list

使用Python自定義多執行緒,得到所有返回結果組成list

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)