并发编程
# 1 操作系统发展史
# 2 进程基础:操作系统上运行的程序,是资源分配的最小单位
# 3 进程调度:时间片轮转法
# 4 并发和并行
# 5 同步,异步,阻塞,非阻塞
# 6 python创建进程
-两种方式:
-类继承:Process,重写run方法
-Process(target=任务)
-Process 属性和方法
-python启动一个进程:相当于,又开了一个python解释器,执行这个代码
-进程间数据是隔离的:进程间通信
# 7 进程同步:锁
# 8 进程间通信:Queue 队列
# 9 进程间数据共享
# 10 线程是什么:cpu调度的最小单位,真正执行程序的 每个进程下至少有一个主线程
# 11 创建多线程
-两种方式:Thread
# 12 GIL全局解释器锁:对Python由全局解释器锁(GIL)来控制,正是这个锁能保证同一时刻只有一个线程在运行
-作用:一个进程下开启的多个线程,必须获得GIL锁,才能运行
-为什么有呢?
-当年没有多核,为了处理方便,就加了gil
-python垃圾回收机制,垃圾回收线程
-(cpython解释器)大的互斥锁,获得锁才能运行,释放锁,被别的线程抢到才能执行
# 13 守护线程
# 14 锁:互斥锁,递归锁,信号量,event事件
-互斥锁:作用,多线程并发操作变量时,保证数据安全
-递归锁,可重入锁:科学家吃面问题:死锁问题
-https://zhuanlan.zhihu.com/p/489305763
# 15 线程队列 queue
-线程间通信:共享变量
-线程间通信,使用queue,不需要使用锁了
# 16 线程池和进程池
# 17 协程:单线程下实现并发
# 18 gevent 实现协程(第三方实现)
-io操作,使用gevent的io
-同步:time.sleep()
# 19 asyncio实现协程
# 20 异步框架
# 有了gil锁为什么还要互斥锁?

浙公网安备 33010602011771号