python學習(三十二)線程鎖&守護線程&多進程

來源:互聯網
上載者:User

標籤:結束   UI   python2   start   global   span   列印   修改   16px   

1、線程鎖

如果多個線程同時要修改一個資料的時候,可能會把資料覆蓋,這個時候就要在改資料的時候加鎖,只同時有一個線程在改這個資料,改完後再解鎖。

在Python2裡面要加鎖,在Python3裡面不用,因為Python3裡面會自動加鎖和解鎖。

在Python2裡面加鎖的代碼如下:

import threading,timenum=1lock=threading.Lock() #申請一把鎖def run():    time.sleep(1)    global num    lock.acquire()  #加鎖    num+=1    lock.release()   #解鎖   #在python3裡面可以不加,預設會加上的ts=[]for  i in range(50):    t=threading.Thread(target=run)    t.start()    ts.append(t)[t.join() for t in ts]#如果主線程沒有做等待(以上兩句),那麼最後列印的num值是1,因為列印num的時候,子線程因有sleep時間還沒執行完print(num)
2、守護線程

 把子線程設定為守護線程,那麼主線程一旦結束,子線程不管有沒有執行完也會結束

import threading,timedef run():    time.sleep(3)    print(‘hhh‘)for i in range(50):    t=threading.Thread(target=run)    t.setDaemon(True)  #把子線程設定成為守護線程    t.start()print(‘運行完成‘)  #主線程執行完了,子線程也就結束了,所以只會列印這一句

以上代碼,本來在3秒後要輸出hhh,結果因為主線程運行完後,還沒到3秒,hhh還沒列印,子線程也結束了,所以只輸出運行完成

如果以上代碼主線程在輸出運行完成後,等待3秒,那麼子線程就可以執行

import threading,timedef run():    time.sleep(3)    print(‘hhh‘)for i in range(50):    t=threading.Thread(target=run)    t.setDaemon(True)  #把子線程設定成為守護線程    t.start()print(‘運行完成‘)  #主線程執行完了,子線程也就結束了,所以只會列印這一句time.sleep(3)  #因為主線程在列印上一句後,等待了3秒,這時候子線程運行完了,所以子線程的內容也會列印
3、多進程

多進程多用於處理CPU密集型任務

多線程多用於處理I/O密集型任務

import multiprocessing,threadingdef my():    print(‘哈哈哈哈‘)def run(num):    for i in range(num):        t=threading.Thread(target=my)        t.start()if __name__==‘__main__‘:    for i in range(5):        p=multiprocessing.Process(target=run,args=(6,)) #啟動進程        p.start()

啟動進程,每個進程有6個線程,總共5個進程,最後輸出30次哈哈哈哈

 

python學習(三十二)線程鎖&守護線程&多進程

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.