python类继承返回值_python继承threading.Thread实现有返回值的子类实例
繼承與threading.thread實(shí)現(xiàn)有返回值的子類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
補(bǔ)充知識:python3多線程自定義threading子類
解決問題
1、python3多線程自定義threading.thread的子類;
2、多線程并行,獲取多線程運(yùn)行結(jié)果
代碼實(shí)例
import threading
from time import sleep
exitflag = true
def pp1(*args):
i = 1
while(exitflag):
print('\r'+' '*20,end='')
print('\r線程1運(yùn)行中'+'.'*(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 + 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()語句調(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.result
t1 = mythread(pp1) #初始化t1
t2 = mythread(pp2,2,3) #初始化t1
t1.start() #啟動線程t1
t2.start() #啟動線程t2
t2.join() #判斷線程t2運(yùn)行結(jié)束
exitflag = false #線程2運(yùn)行結(jié)束后,線程1才能結(jié)束
t1.join() #判斷線程t1運(yùn)行結(jié)束,線程t1結(jié)束后,主線程才能往下運(yùn)行
print('線程2返回結(jié)果: ',t2.getresult())
print('主線程結(jié)束')
以上這篇python繼承threading.thread實(shí)現(xiàn)有返回值的子類實(shí)例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持萬仟網(wǎng)。
希望與廣大網(wǎng)友互動??
點(diǎn)此進(jìn)行留言吧!
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的python类继承返回值_python继承threading.Thread实现有返回值的子类实例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: can通道采样频率_CAN采样点设置为多
- 下一篇: websocket python爬虫_p