最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python的多線程原來(lái)可以這樣解

 更新時(shí)間:2022年01月09日 17:06:58   作者:lijin111222  
這篇文章主要為大家介紹了python的多線程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助

多線程

多線程類似于同時(shí)執(zhí)行多個(gè)不同程序,多線程運(yùn)行有如下優(yōu)點(diǎn):

使用線程可以把占據(jù)長(zhǎng)時(shí)間的程序中的任務(wù)放到后臺(tái)去處理。
用戶界面可以更加吸引人,比如用戶點(diǎn)擊了一個(gè)按鈕去觸發(fā)某些事件的處理,可以彈出一個(gè)進(jìn)度條來(lái)顯示處理的進(jìn)度。
程序的運(yùn)行速度可能加快。
在一些等待的任務(wù)實(shí)現(xiàn)上如用戶輸入、文件讀寫和網(wǎng)絡(luò)收發(fā)數(shù)據(jù)等,線程就比較有用了。在這種情況下我們可以釋放一些珍貴的資源如內(nèi)存占用等等。

創(chuàng)建線程

一個(gè)進(jìn)程里面必然有一個(gè)主線程。

創(chuàng)建線程的兩種方法
繼承Thread類,并重寫它的run()方法
import threading
import time
cLass MyThread(threading.Thread):
	def__ init__ (seLf, n):
		super (MyThread, seLf).__ init__()
		self.n = n
	def run(self):
		print('以類的方式創(chuàng)建多線程',self.n)
		time.sleep(3)
r1 = MyThread(1)
r2 = MyThread(2)
r1.start()
r2.start()
調(diào)用threading庫(kù)的Thread類
import threading
import time
def test(x):
    print(x)
    time.sleep(2)
if __name__=='__main__':
    t1 = threading.Thread(target=test, args=(1,))  
    t2 = threading.Thread(target=test, args=(2,))
    t1.start()
    t2.start()

守護(hù)線程此類線程的特點(diǎn)是,當(dāng)程序中主線程及所有非守護(hù)線程執(zhí)行結(jié)束時(shí),未執(zhí)行完畢的守護(hù)線程也會(huì)隨之消亡(進(jìn)行死亡狀態(tài)),程序?qū)⒔Y(jié)束運(yùn)行。

#守護(hù)線程
import threading
import time
def run(n):
    print('task',n)
    time.sleep(1)
    print('3s')
    time.sleep(1)
    print('2s')
    time.sleep(1)
    print('1s')
if __name__ == '__main__': #主線程
    t=threading.Thread(target=run,args=('t1',))
    t.setDaemon(True) #設(shè)置子線程為守護(hù)線程,守護(hù)主線程。主線程結(jié)束,子線程也立馬結(jié)束。必須在start() 方法調(diào)用之前設(shè)置
    t.start()
    print('end')

線程鎖

1.互斥鎖

#互斥鎖
import threading
def run():
    global x
    lock.acquire() #申請(qǐng)鎖
    x+=1 
    lock.release() #釋放鎖
if __name__=='__main__':
    x=0
    res=[]
    lock=threading.Lock() #實(shí)例化線程鎖
    for i in range(100): #100個(gè)線程
        t=threading.Thread(target=run) 
        t.start()
        res.append(t)
    for t in res:
        t.join()    
    print(x) 
2.遞歸鎖

import threading
def func(lock):
    global gl_num
    lock.acquire()
    gl_num += 1
    time.sleep(1)
    print(gl_num)
    lock.release()
if __name__ == '__main__':
    gl_num = 0
    lock = threading.RLock()
    for i in range(10):
       t = threading.Thread(target=func,args=(lock,))
       t.start()

練手:

import threading
import time  #導(dǎo)入時(shí)間模塊

#線程一:輸出當(dāng)前的年月日時(shí)分秒
class myThread1(threading.Thread):
    def run(self):
        while (True):
            print(time.asctime(time.localtime(time.time())))#輸出實(shí)時(shí)時(shí)間
            time.sleep(1)
#線程二:name每2秒打印輸出4次結(jié)束
class myThread2(threading.Thread):#繼承threading.Thread
    def __init__(self,name):#繼承父類的方法實(shí)現(xiàn)繼承threading.Thread       
        super(myThread2, self).__init__()#super方法調(diào)用父類
        self.name=name #實(shí)例化對(duì)象屬性    
    def run(self):#重寫Thread類中的run方法
        for i in range(4):#for循環(huán)打印4次
            print(self.name)          
            time.sleep(2)#打印一次delay兩秒
if __name__ == '__main__':
    #創(chuàng)建線程1和線程2并傳入?yún)?shù)
    x1 = myThread1()
    x2 = myThread2("張三")
    #開啟線程
    x1.start()
    x2.start()

總結(jié)

本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • 簡(jiǎn)介Django框架中可使用的各類緩存

    簡(jiǎn)介Django框架中可使用的各類緩存

    這篇文章主要介紹了簡(jiǎn)介Django框架中可使用的各類緩存,Django是人氣最高的Python web開發(fā)框架,需要的朋友可以參考下
    2015-07-07
  • Python利用matplotlib做圖中圖及次坐標(biāo)軸的實(shí)例

    Python利用matplotlib做圖中圖及次坐標(biāo)軸的實(shí)例

    今天小編就為大家分享一篇Python利用matplotlib做圖中圖及次坐標(biāo)軸的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-07-07
  • python如何實(shí)現(xiàn)質(zhì)數(shù)求和

    python如何實(shí)現(xiàn)質(zhì)數(shù)求和

    這篇文章主要介紹了python如何實(shí)現(xiàn)質(zhì)數(shù)求和,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Python入門案例之找出文件中出現(xiàn)次數(shù)最多的10個(gè)單詞

    Python入門案例之找出文件中出現(xiàn)次數(shù)最多的10個(gè)單詞

    這篇文章主要為大家?guī)?lái)一個(gè)簡(jiǎn)單的Python入門案例——找出文件中出現(xiàn)次數(shù)最多的10個(gè)單詞,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-02-02
  • win10 64bit下python NLTK安裝教程

    win10 64bit下python NLTK安裝教程

    這篇文章主要為大家詳細(xì)介紹了win10 64bit下python NLTK安裝教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • Python爬取豆瓣數(shù)據(jù)實(shí)現(xiàn)過(guò)程解析

    Python爬取豆瓣數(shù)據(jù)實(shí)現(xiàn)過(guò)程解析

    這篇文章主要介紹了Python爬取豆瓣數(shù)據(jù)實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • ?Python思維導(dǎo)圖匯總

    ?Python思維導(dǎo)圖匯總

    這篇文章主要給大家分享的是?Python思維導(dǎo)圖匯總,對(duì)大家學(xué)習(xí)或工作或許有一定參考價(jià)值,需要的朋友可以參考一下,洗碗給對(duì)你有所幫助
    2022-01-01
  • Python方法的延遲加載的示例代碼

    Python方法的延遲加載的示例代碼

    本篇文章主要介紹了Python方法的延遲加載的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • 簡(jiǎn)單介紹Python的第三方庫(kù)yaml

    簡(jiǎn)單介紹Python的第三方庫(kù)yaml

    今天給大家?guī)?lái)的是關(guān)于Python的相關(guān)知識(shí),文章圍繞著Python的第三方庫(kù)yaml展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Python標(biāo)準(zhǔn)庫(kù)itertools的使用方法

    Python標(biāo)準(zhǔn)庫(kù)itertools的使用方法

    本文匯總整理了Python標(biāo)準(zhǔn)庫(kù)itertools的使用方法,并提供簡(jiǎn)單應(yīng)用示例;如果還不能滿足你的要求,歡迎加入補(bǔ)充
    2020-01-01

最新評(píng)論

万安县| 华宁县| 吴忠市| 长垣县| 景宁| 萍乡市| 新乡市| 枣庄市| 夹江县| 石楼县| 托克逊县| 萝北县| 平陆县| 通州市| 宁德市| 吉安市| 金山区| 彰化市| 沐川县| 巫山县| 静宁县| 乌什县| 吐鲁番市| 全州县| 东光县| 东方市| 乐亭县| 公安县| 建平县| 同仁县| 茌平县| 拉萨市| 新化县| 卓资县| 浠水县| 孟村| 林周县| 伊宁县| 黑山县| 宜春市| 临泽县|