python多執行緒獲取返回值類重新封裝
阿新 • • 發佈:2018-11-12
之前在開發對比測試工具時,需要同步從資料庫拉取資料,拉取資料時間比較長,使用到了多執行緒。但是由於多執行緒沒有返回值,只能執行,因此在搜尋相關資料以後,進行了改進,重新封裝了一下。
以下為封裝後的以及測試程式碼:
import threading import time class MyThread(threading.Thread): def __init__(self,func,args=(),kwargs=()): super(MyThread,self).__init__() self.func = func self.args = args self.kwargs = kwargs def run(self): self.result = self.func(*self.args,*self.kwargs) def get_result(self): try: return self.result # 如果子執行緒不使用join方法,此處可能會報沒有self.result的錯誤 except Exception: return None def foo(a,b,c): time.sleep(1) return a*2,b*2,c*2 st = time.time() li = [] for i in range(4): t = MyThread(foo,args=(i,i+1,i+2)) li.append(t) t.start() li[0].join() li[0].get_result() et = time.time() print(et - st)