python 线程线程
文章目录文章目录python 线程一、概念梳理1.线程定义2.线程的工作方式3.线程的优缺点:4 .进程定义5.进程的优缺点:6.进程与线程
区别7.进程、线程、协程对比8.总结二、 线程1.单线程2.线程常用方法3.多线程4.join():等此线程执行完后,再执行其他线程或
主线程5.GIL6.Python多线程的工作过程7.线程锁,互斥锁8.死锁、递归锁三、Event类
python 线程线程
一、概念梳理一、概念梳理
1.线程定义线程定义
线程是操作系统能够进行运算调度的最小单位。线程是操作系统能够进行运算调度的最小单位。
它被包含在进程之中,是进程中的实际运作单位。
一条线程指的是进程中一个单一顺序的控制流一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。一个线程是一
个execution context(执行上下文),即一个一个cpu执行时所需要的一串指令执行时所需要的一串指令。
2.线程的工作方式线程的工作方式
CPU会给你一个在同一时间能够做多个运算的幻觉,实际上它在每个运算上只花了极少的时间,本质上本质上CPU同一时刻只干了同一时刻只干了
一件事一件事。它能这样做就是因为它有每个运算的execution context。就像你能够和你朋友共享同一本书一样,多任务也能共享同
一块CPU
3.线程的优缺点:线程的优缺点:
优点: 共享内存(一个进程内),i/o操作可实现并发执行
缺点: 抢占资源,切换上下文非常耗时
个数: 一般依情况而定
使用场所: i/o密集型
4 .进程定义进程定义
一个程序的执行实例就是一个进程。一个程序的执行实例就是一个进程。
每一个进程提供执行程序所需的所有资源。(进程本质上是资源的集合进程本质上是资源的集合)
一个进程有一个虚拟的地址空间、可执行的代码、操作系统的接口、安全的上下文(记录启动该进程的用户和权限等等)、唯
一的进程ID、环境变量、优先级类、最小和最大的工作空间(内存空间),还要有至少一个线程。
每一个进程启动时都会最先产生一个线程,即主线程。然后主线程会再创建其他的子线程
与进程相关的资源:
内存页(同一个进程中的所有线程共享同一个内存空间)
文件描述符(e.g. open sockets)
安全凭证(e.g.启动该进程的用户ID)
5.进程的优缺点:进程的优缺点:
优点: 可同时利用多个cpu,进行多个操作
缺点: 重新开辟内存空间,非常耗费资源
个数: 一般和cpu颗数相同
使用场所: 一般是计算密集型
6.进程与线程区别进程与线程区别
1.同一个进程中的线程共享同一内存空间,但是进程之间是独立的。
2.同一个进程中的所有线程的数据是共享的(进程通讯),进程之间的数据是独立的。
3.对主线程的修改可能会影响其他线程的行为,但是父进程的修改(除了删除以外)不会影响其他子进程。
4.线程是一个上下文的执行指令,而进程则是与运算相关的一簇资源。
5.同一个进程的线程之间可以直接通信,但是进程之间的交流需要借助中间代理来实现。
6.创建新的线程很容易,但是创建新的进程需要对父进程做一次复制。
7.一个线程可以操作同一进程的其他线程,但是进程只能操作其子进程。
8.线程启动速度快,进程启动速度慢(但是两者运行速度没有可比性)。
7.进程、线程、协程对比进程、线程、协程对比