网络概念
并发:单个CPU需要执行多个任务(CPU < 任务数)
任务1:---- ----
任务2: ---- ----
任务3: ----
进程、线程:本质是操作系统执行任务的调度单位。
多进程:并行
每个进程都有自己独立的内存空间,不同进程不能共享内存空间,所以多进程任务开销太大。
multiprocessing
多线程:并发
多个线程共享同一个进程的内存空间,数据通信、信号、切换开销极小。
互斥锁:让多个线程安全有序的访问内存空间的机制。
threading
from multiprocessing.dummy import Pool
注意:让主线程阻塞,等待所有子线程执行完 再执行主线程
GIL:全局解释器锁,在一个解释器环境下,一次只能运行一个线程
GIL 在IO阻塞/科学计算1000次时,会自动释放,尝试让其它线程工作
协成:本质是 函数/方法,由程序员调度
多协成:并发
gevent
gevent.monkey.patch_all()
将Python底层的网络库(socket、select)打个补丁,让他们在处理网络IO时,按异步方式执行
同步阻塞
异步非阻塞
同步、异步:执行方式
阻塞、非阻塞:执行状态
浙公网安备 33010602011771号