并发
有一组任务隔间执行
如跑步2个钟,看书4个钟,分别需要体力和脑力的休息,间隔执行会更合理有效率,省去休息的时间:
跑步半个钟+看书1个钟;跑步半个钟+看书1个钟;跑步半个钟+看书1个钟;跑步半个钟+看书1个钟;
并行
同一时间进行多个事情
如跑步半个钟,听音乐1个钟:
一边跑步一边听音乐,共耗时1个钟
并发也包含并行的情况,并行是并发的特殊例子
多线程
线程依赖于进程,一个进程中可以有多个线程,他们有自己的堆戋和局部变量,但是没有独立的地址空间,好处是可以共享内存。
消耗资源比较少,但是健壮性不如多进程。
关于共享数据,多线程为了线性安全,通常会设置一个锁,python就有一个GIL防止变量同时被修改。
可以在任务管理器的‘性能’-‘资源监控器’中看到进程对应的线程数。
多进程
可以用任务管理器看到目前运行的进程,进程间的地址空间相互独立。
消耗资源较大。
阻塞
对函数调用而言,一般,阻塞的调用都是同步;但非阻塞并不都是异步
非阻塞
参考: