溫馨提示×

溫馨提示×

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

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

最簡單的多線程并發(fā)與守護(hù)線程與join的運(yùn)用

發(fā)布時間:2020-05-28 09:02:04 來源:網(wǎng)絡(luò) 閱讀:443 作者:堅持和學(xué)習(xí) 欄目:編程語言
import threading
import time

 def run(n):
     print("talk",n)
     time.sleep(3)

#run("t1")
#run("t2")
 t1=threading.Thread(target=run,args=("t1",))
 t2=threading.Thread(target=run,args=("t2",))
#t1.start()
#t2.start()

##類的多線程方式
 class MyThread(threading.Thread):
     def __init__(self,n,sleep):
         super(MyThread,self).__init__()
         self.n=n
         self.sleep=sleep

     def run(self):
         print("talk me all you know",self.n)
         time.sleep(self.sleep)
         print("so esay %s",self.n)

#t1=MyThread("t1",2)
#t2=MyThread("t2",4)
#t1.start()

#t2.start()
#t1.join()
#t2.join() #等待t2的結(jié)果(這一步后直接計算時間得到的就是2個線程執(zhí)行完所花的時間)
#print("主要程序執(zhí)行完畢")

##計算所有線程花費(fèi)的時間,守護(hù)線程(非守護(hù)線程一結(jié)束程序就結(jié)束),看是否是主線程,活躍的線程數(shù)量

def run(n):
    print("task",n)
    time.sleep(2)
stat_time=time.time()
loot=[] #創(chuàng)建一個空列表(存線程實(shí)例)
for i in range (50):
    t=threading.Thread(target=run,args=("t-%s"%i,))
    t.setDaemon(True)#把當(dāng)前線程設(shè)置為守護(hù)線程
    t.start()
    loot.append(t) #為了不阻塞后面的線程啟動,不在這里join,先放到一個列表里

#for t in loot:#循環(huán)線程實(shí)例列表,等待所有線程執(zhí)行完畢
     #t.join() #等待一個線程全部執(zhí)行完再執(zhí)行其他線程(把并程改成了串行)
print("-----ddddd-----",threading.current_thread(),threading.active_count())#看是否是主線程,活躍的線程數(shù)量
print("cost:",time.time()-stat_time)
向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI