溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python繼承threading.Thread如何實現有返回值的子類

發布時間:2020-07-29 10:04:29 來源:億速云 閱讀:341 作者:小豬 欄目:開發技術

這篇文章主要講解了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如何實現有返回值的子類有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女