時間片輪轉:每個任務執(zhí)行萬分之一秒挑秉,然后切換勋拟。
- 并行:真的多任務勋磕。每個CPU核心執(zhí)行一個任務
- 并發(fā):假的多任務。啟用時間輪轉敢靡,CPU對每個任務輪流計算挂滓,每次只用萬分之一秒執(zhí)行一個任務。
當只有4個任務時啸胧,4核CPU可以實現(xiàn)并行
赶站,即每個核心負責一個任務。
但是當任務數(shù)超過CPU的核心數(shù)時纺念,則必須要啟用時間輪轉贝椿。
一般情況下,全都是并發(fā)
陷谱,因為任務數(shù)總是超過核心數(shù)烙博。
Python線程代碼:
import threading
def func():
for i in range(10):
print('Run...')
th = threading.thread(target=func)
th.start()
查看當前運行多線程數(shù)量:
由于多線程同時運行多個線程,每執(zhí)行完成一個就銷毀一個,所以當前線程數(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()
開啟線程后踪栋,不會等待所有線程結束,而會直接執(zhí)行下一句图毕,同時多條線程一起執(zhí)行夷都。
所以,這時候去讀取線程數(shù)予颤,是一個動態(tài)的過程囤官,需要每隔一段時間重復去讀取。這時會發(fā)現(xiàn)蛤虐,線程數(shù)是逐漸減少的党饮。