這篇文章主要講解了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('\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 + 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('主線程結束')看完上述內容,是不是對python繼承threading.Thread如何實現有返回值的子類有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。