python繼承threading.Thread實現(xiàn)有返回值的子類實例
繼承與threading.Thread實現(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、多線程并行,獲取多線程運行結(jié)果
代碼實例
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結(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運行結(jié)束exitFlag = False #線程2運行結(jié)束后,線程1才能結(jié)束t1.join() #判斷線程t1運行結(jié)束,線程t1結(jié)束后,主線程才能往下運行print(’線程2返回結(jié)果: ’,t2.getResult())print(’主線程結(jié)束’)
以上這篇python繼承threading.Thread實現(xiàn)有返回值的子類實例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. ASP.NET MVC實現(xiàn)下拉框多選2. JSP中param動作的實例詳解3. Jsp servlet驗證碼工具類分享4. ASP.NET MVC實現(xiàn)本地化和全球化5. 解決request.getParameter取值后的if判斷為NULL的問題6. .NET Framework各版本(.NET2.0 3.0 3.5 4.0)區(qū)別7. .Net反向代理組件Yarp用法詳解8. ASP.NET MVC增加一條記錄同時添加N條集合屬性所對應(yīng)的個體9. 刪除docker里建立容器的操作方法10. .NET中的MassTransit分布式應(yīng)用框架詳解
