时间片轮转:每个任务执行万分之一秒,然后切换。
- 并行:真的多任务。每个CPU核心执行一个任务
- 并发:假的多任务。启用时间轮转,CPU对每个任务轮流计算,每次只用万分之一秒执行一个任务。
当只有4个任务时,4核CPU可以实现并行
,即每个核心负责一个任务。
但是当任务数超过CPU的核心数时,则必须要启用时间轮转。
一般情况下,全都是并发
,因为任务数总是超过核心数。
Python线程代码:
import threading
def func():
for i in range(10):
print('Run...')
th = threading.thread(target=func)
th.start()
查看当前运行多线程数量:
由于多线程同时运行多个线程,每执行完成一个就销毁一个,所以当前线程数量
是动态变化的。
代码:
# .....
# .....
th = threading.thread(target=func)
th.start()
while True:
amount = len(threading.enumerate)
if amount < 1:
break
sleep(0.5)
注意:程序执行到th.start()
开启线程后,不会等待所有线程结束,而会直接执行下一句,同时多条线程一起执行。
所以,这时候去读取线程数,是一个动态的过程,需要每隔一段时间重复去读取。这时会发现,线程数是逐渐减少的。
网友评论