python繼承threading.Thread實現有返回值的子類實例
繼承與threading.Thread實現有返回值的子類MyThread,廢話不多說,大家直接看代碼
import threadingclass MyThread(threading.Thread): def __init__(self,func,args=()): super(MyThread,self).__init__() self.func = func self.args = args def run(self): self.res = self.func(*self.args) def getResult(self): try: return self.res except Exception: return None
補充知識:python3多線程自定義threading子類
解決問題
1、python3多線程自定義threading.Thread的子類;
2、多線程并行,獲取多線程運行結果
代碼實例
import threadingfrom time import sleepexitFlag = Truedef pp1(*args): i = 1 while(exitFlag): print(’r’+’ ’*20,end=’’) print(’r線程1運行中’+’.’*(i%7),end=’’) sleep(0.5) i = (i>=6 and 1 or i+1) #if i>=6則i=1,否則i=i+1 print(’線程1結束’)def pp2(x,y): sleep(3) print(’n線程2結束’) return x + yclass MyThread(threading.Thread): #MyThread類繼承threading.Thread類 def __init__(self,func,args1=None,args2=None): threading.Thread.__init__(self) self.func = func self.args1 = args1 self.args2 = args2 def run(self): #t.start()語句調用run方法 self.result = self.func(self.args1,self.args2) def getResult(self): #getResult方法可獲得func函數return的結果 threading.Thread.join(self) return self.resultt1 = MyThread(pp1) #初始化t1t2 = MyThread(pp2,2,3) #初始化t1t1.start() #啟動線程t1t2.start() #啟動線程t2t2.join() #判斷線程t2運行結束exitFlag = False #線程2運行結束后,線程1才能結束t1.join() #判斷線程t1運行結束,線程t1結束后,主線程才能往下運行print(’線程2返回結果: ’,t2.getResult())print(’主線程結束’)
以上這篇python繼承threading.Thread實現有返回值的子類實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。
相關文章: