网络概念

并发:单个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时,按异步方式执行

 

同步阻塞

异步非阻塞

 

同步、异步:执行方式

阻塞、非阻塞:执行状态

 

 

posted on 2019-02-01 11:57  MMoving  阅读(61)  评论(0)    收藏  举报

导航