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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • iOS多线程编程 基本知识 1. 进程(process) 进程是指在系统中正在运行的一个应用程序,就是一段程序的执...
    陵无山阅读 6,112评论 1 14
  • 一.概述 1.基本概念 同步与异步的概念 同步 必须等待当前语句执行完毕,才可以执行下一个语句。 异步 不用等待当...
    Jt_Self阅读 484评论 0 1
  • 一、多线程 说明下线程的状态 java中的线程一共有 5 种状态。 NEW:这种情况指的是,通过 New 关键字创...
    Java旅行者阅读 4,729评论 0 44
  •   一个任务通常就是一个程序,每个运行中的程序就是一个进程。当一个程序运行时,内部可能包含了多个顺序执行流,每个顺...
    OmaiMoon阅读 1,706评论 0 12
  • 线程池ThreadPoolExecutor corepoolsize:核心池的大小,默认情况下,在创建了线程池之后...
    irckwk1阅读 756评论 0 0