Python并发编程之多进程(理论)

一、什么是进程

进程:正在内存中运行的一道程序。

二、进程与程序的区别

程序指的是一堆代码,而进程指的是程序运行的过程。

通一个程序执行两次,就是两道进程。

三、并发与并行

并发:伪并行,看起来是同时运行,其实是CPU不断切换的结果。用单个CPU加多道技术就能实现。

并行:同时运行,CPU的一个核运行一道程序,多核CPU或多个CPU才能实现。

四、同步\异步和阻塞\非阻塞(重点)

同步:在发出一个功能调用时,在没有得到结果之前,该调用就不会返回。换句话说就是由调用者主动等待这个调用的结果。

异步:和同步相反,调用在发出之后,这个调用就直接返回,不会立刻得到结果,而是等异步功能完成后,被调用者通过状态、通知或回调函数来通知调用者。状态效率低,通知效率高,回调函数和通知没有太多区别。

阻塞:调用结果返回之前,当前线程会被挂起(IO操作)。调用线程只有在得到结果之后才会返回。和同步不同的是,很多时候同步的当前线程还是激活的,只是从逻辑上当前函数没有返回而已。

非阻塞:即使没有得到结果,该调用也不会阻塞当前线程。

小结:同步/异步针对的是函数/任务的调用方式:同步就是当一个进程发起一个函数调用时,一直等到函数完成,但进程还处于激活状态。而异步是当一个进程发起一个函数调用的时候,不会等函数返回,而是去执行下一个任务,函数返回的时候通过状态、通知、回调函数来通知进程完成任务。阻塞和非阻塞是针对进程或线程的,阻塞是当请求不能满足的时候就将进程挂起,非阻塞则不会。

posted @ 2019-01-10 15:07  梁少华  阅读(202)  评论(0编辑  收藏  举报