创建线程的3种方式,多线程,线程冲突,互斥锁,递归锁,信号量
进程的生命周期:
当操作系统要完成某个任务时,它会创建一个进程。当进程完成任务之后,系统就会撤销这个进程,收回它所占用的资源。从创建到撤销的时间段就是进程的生命期
进程之间存在并发性:
在一个系统中,同时会存在多个进程。他们轮流占用CPU和各种资源
无论是并行还是并发,在用户看来都是同时运行的,不管是进程还是线程,都只是一个任务而已,
真正干活的是CPU,CPU来做这些任务,而一个cpu(单核)同一时刻只能执行一个任务。
创建进程
方法一:使用multiprocessing.Process
方法二:通过继承Process实现自定义进程
多进程(同步,异步)
进程锁
import multiprocessing
lock = multiprocessing.Lock()
方式1:.acquire() .release()
方式2: with lock:
信号量控制多进程的最大并发
协程
协程,又称微线程,纤程。
协程与线程的差异:
协程的创建(4种方式)
方式1:协程简单的实现(yield关键字)
与生成器的方式类似
方式2:使用greenlet来实现协程
方式3:gevent+sleep
会将cpu的执行权分配给未睡眠的协程
方式4:使用gevent与monkey实现协程
多进程+协程
小结
进程、线程、协程只要有jion函数就表示 “设置阻塞”(叫主线程“等等我”):“完成一个再执行下一个”,确保CPU在高频切换交替执行任务的时候,能顺利完成任务。
“进程”跟CPU有关,蛋核CPU一次只能处理一个进程,在单CPU下的多进程,是主进程中创建的多个子进程,通过CPU高频切换进行处理。