python 多进程/多线程/协程 同步异步

这篇主要是对概念的理解:python

一、异步和多线程区别:两者不是一个同等关系,异步是最终目的,多线程只是咱们实现异步的一种手段。异步是当一个调用请求发送给被调用者,而调用者不用等待其结果的返回而能够作其它的事情。实现异步能够采用多线程技术或则交给另外的进程来处理。多线程的好处,比较容易的实现了 异步切换的思想, 由于异步的程序很难写的多线程自己程仍是以同步完成,可是应该说比效率是比不上异步的。 并且多线很容易写, 相对效率也高。编程

二、异步和同步的区别:  在io等待的时候,同步不会切走,浪费了时间。异步和同步是相对的,同步就是顺序执行,执行完一个再执行下一个,须要等待、协调运行。异步就是彼此独立,在等待某事件的过程当中继续作本身的事,不须要等待这一事件完成后再工做。线程就是实现异步的一个方式。 异步是让调用方法的主线程不须要同步等待另外一线程的完成,从而可让主线程干其它的事情。
 
三、 多线程:多线程是程序设计的逻辑层概念,它是进程中并发运行的一段代码。 多线程能够实现线程间的切换执行。多线程的优势很明显,线程中的处理程序依然是顺序执行,符合普通人的思惟习惯,因此编程简单。可是多线程的缺点也一样明显 ,线程的使用(滥用)会给系统带来上下文切换的额外负担。而且线程间的共享变量可能形成死锁的出现。
 
四、python由于GIL 全局锁的缘由, 因此同一时刻只能有一个线程在运行,遇到IO操做才会释放切换。当咱们须要编写并发爬虫等IO密集型的程序时,应该选用多线程或者协程;当咱们须要科学计算,设计CPU密集型程序,应该选用多进程,更好的利用多个CPU。
相关文章
相关标签/搜索