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
補充知識: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. python爬蟲實戰(zhàn)之制作屬于自己的一個IP代理模塊2. python 利用toapi庫自動生成api3. IntelliJ IDEA設(shè)置默認瀏覽器的方法4. HTML 絕對路徑與相對路徑概念詳細5. Spring如何使用xml創(chuàng)建bean對象6. Java程序的編碼規(guī)范(6)7. python實現(xiàn)PolynomialFeatures多項式的方法8. python實現(xiàn)在內(nèi)存中讀寫str和二進制數(shù)據(jù)代碼9. Android Studio設(shè)置顏色拾色器工具Color Picker教程10. vue 如何從單頁應用改造成多頁應用
