這篇文章主要介紹了python繼承threading.Thread實現有返回值的子類實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
繼承與threading.Thread實現有返回值的子類MyThread,廢話不多說,大家直接看代碼
import threading class 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 threading from time import sleep
exitFlag = True def pp1(*args): i = 1 while(exitFlag):
print(' '+' '*20,end='')
print(' 線程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('
線程2結束')
return x + y
class 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.result t1 = MyThread(pp1) #初始化t1 t2 = MyThread(pp2,2,3)
#初始化t1 t1.start() #啟動線程t1 t2.start() #啟動線程t2 t2.join() #判斷線程t2運行結束 exitFlag = False #線程2運行結束後,線程1才能結束 t1.join() #判斷線程t1運行結束,線程t1結束後,主線程才能往下運行 print('線程2返回結果: ',t2.getResult()) print('主線程結束')
[retouched ] python繼承threading.Thread實現有返回值的子類實例已經有741次圍觀