Python多线程 Multi-threading

时间片轮转:每个任务执行万分之一秒,然后切换。

  • 并行:真的多任务。每个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()开启线程后,不会等待所有线程结束,而会直接执行下一句,同时多条线程一起执行。
所以,这时候去读取线程数,是一个动态的过程,需要每隔一段时间重复去读取。这时会发现,线程数是逐渐减少的。

你可能感兴趣的:(Python多线程 Multi-threading)