Python多線程 Multi-threading

時間片輪轉(zhuǎn):每個任務(wù)執(zhí)行萬分之一秒,然后切換。

  • 并行:真的多任務(wù)。每個CPU核心執(zhí)行一個任務(wù)
  • 并發(fā):假的多任務(wù)。啟用時間輪轉(zhuǎn),CPU對每個任務(wù)輪流計算,每次只用萬分之一秒執(zhí)行一個任務(wù)。

當(dāng)只有4個任務(wù)時,4核CPU可以實現(xiàn)并行,即每個核心負(fù)責(zé)一個任務(wù)。
但是當(dāng)任務(wù)數(shù)超過CPU的核心數(shù)時,則必須要啟用時間輪轉(zhuǎn)。

一般情況下,全都是并發(fā),因為任務(wù)數(shù)總是超過核心數(shù)。

Python線程代碼:

import threading

def func():
    for i in range(10):
        print('Run...')

th = threading.thread(target=func)
th.start()

查看當(dāng)前運(yùn)行多線程數(shù)量:
由于多線程同時運(yùn)行多個線程,每執(zhí)行完成一個就銷毀一個,所以當(dāng)前線程數(shù)量是動態(tài)變化的。

代碼:

# .....
# .....

th = threading.thread(target=func)
th.start()

while True:
    amount = len(threading.enumerate)
    if amount < 1:
        break
    sleep(0.5)

注意:程序執(zhí)行到th.start()開啟線程后,不會等待所有線程結(jié)束,而會直接執(zhí)行下一句,同時多條線程一起執(zhí)行。
所以,這時候去讀取線程數(shù),是一個動態(tài)的過程,需要每隔一段時間重復(fù)去讀取。這時會發(fā)現(xiàn),線程數(shù)是逐漸減少的。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • iOS多線程編程 基本知識 1. 進(jìn)程(process) 進(jìn)程是指在系統(tǒng)中正在運(yùn)行的一個應(yīng)用程序,就是一段程序的執(zhí)...
    陵無山閱讀 6,346評論 1 14
  • 一.概述 1.基本概念 同步與異步的概念 同步 必須等待當(dāng)前語句執(zhí)行完畢,才可以執(zhí)行下一個語句。 異步 不用等待當(dāng)...
    Jt_Self閱讀 542評論 0 1
  • 一、多線程 說明下線程的狀態(tài) java中的線程一共有 5 種狀態(tài)。 NEW:這種情況指的是,通過 New 關(guān)鍵字創(chuàng)...
    Java旅行者閱讀 4,865評論 0 44
  • ??一個任務(wù)通常就是一個程序,每個運(yùn)行中的程序就是一個進(jìn)程。當(dāng)一個程序運(yùn)行時,內(nèi)部可能包含了多個順序執(zhí)行流,每個順...
    OmaiMoon閱讀 1,804評論 0 12
  • 線程池ThreadPoolExecutor corepoolsize:核心池的大小,默認(rèn)情況下,在創(chuàng)建了線程池之后...
    irckwk1閱讀 867評論 0 0

友情鏈接更多精彩內(nèi)容