python繼承threading.Thread實(shí)現(xiàn)有返回值的子類實(shí)例
繼承與threading.Thread實(shí)現(xiàn)有返回值的子類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
補(bǔ)充知識:python3多線程自定義threading子類
解決問題
1、python3多線程自定義threading.Thread的子類;
2、多線程并行,獲取多線程運(yùn)行結(jié)果
代碼實(shí)例
import threadingfrom time import sleepexitFlag = Truedef pp1(*args): i = 1 while(exitFlag): print(’r’+’ ’*20,end=’’) print(’r線程1運(yùn)行中’+’.’*(i%7),end=’’) sleep(0.5) i = (i>=6 and 1 or i+1) #if i>=6則i=1,否則i=i+1 print(’線程1結(jié)束’)def pp2(x,y): sleep(3) print(’n線程2結(jié)束’) 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()語句調(diào)用run方法 self.result = self.func(self.args1,self.args2) def getResult(self): #getResult方法可獲得func函數(shù)return的結(jié)果 threading.Thread.join(self) return self.resultt1 = MyThread(pp1) #初始化t1t2 = MyThread(pp2,2,3) #初始化t1t1.start() #啟動線程t1t2.start() #啟動線程t2t2.join() #判斷線程t2運(yùn)行結(jié)束exitFlag = False #線程2運(yùn)行結(jié)束后,線程1才能結(jié)束t1.join() #判斷線程t1運(yùn)行結(jié)束,線程t1結(jié)束后,主線程才能往下運(yùn)行print(’線程2返回結(jié)果: ’,t2.getResult())print(’主線程結(jié)束’)
以上這篇python繼承threading.Thread實(shí)現(xiàn)有返回值的子類實(shí)例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. CSS清除浮動方法匯總2. js開發(fā)中的頁面、屏幕、瀏覽器的位置原理(高度寬度)說明講解(附圖)3. HTML5實(shí)戰(zhàn)與剖析之觸摸事件(touchstart、touchmove和touchend)4. CSS百分比padding制作圖片自適應(yīng)布局5. vue跳轉(zhuǎn)頁面常用的幾種方法匯總6. 不要在HTML中濫用div7. XML入門的常見問題(三)8. CSS3實(shí)例分享之多重背景的實(shí)現(xiàn)(Multiple backgrounds)9. 深入了解React中的合成事件10. TypeScript實(shí)現(xiàn)十大排序算法之歸并排序示例詳解
