美文网首页
简单了解进程、线程、协程

简单了解进程、线程、协程

作者: 志O云轩 | 来源:发表于2018-05-13 19:57 被阅读0次

    当单任务不能满足工作的需要,只是需要使用多任务,多任务分为多进程,多线程,多协程

    先有进程,进程创建线程,线程依附于进程,线程里面包含多个协程

    进程是系统资源调配的基本单位,线程是系统调度的基本单位,是代码执行的分支,协程是比线程占用资源还小的执行单元,它自带cpu的上下文,他可以在不开辟线程的基础上来实现多任务。

    创建一条进程需要向操作系统索要资源,创建线程需要向对应的进程索要资源,创建协程需要向相应的线程索要资源,所以,进程最是消耗资源,其次线程,最后协程

    进程之间不共享全局变量,需要靠queue队列来进行各个进程间的通信。线程间共享全局变量,但其中会出现资源竞争,这时需要使用同步方法即子进程加入主进程,或者互斥锁,在使用互斥锁时可能会出现死锁,这时我们需要对其进行手动解锁,可以使用延时或者银行家算法

    进程和线程里面是无序的,主进程或者线程需要等到子进程或线程结束才会结束。如果需要主进程结束同时子进程销毁,需要加入守护主进程或主线程,协程是按照一定的顺序来交替执行,主协程不会等待子协程结束而结束,这是需要将子协程加入主协程里面

    进程和协程只能实现并发,协程可以实现并行

    进程创建调用muilprocessing包里面的Process模块,线程创建调用threading里面的Thread模块,协程主要是调用封装好的geven模块

    进程还可以使用进程池来创建,进程池是一个用来装多个进程的容器,进程池通过multiprocessing里面的Pool来创建。当需要大批量调用进程来工作,我们可以直接调用进程池,进程池的进程数量是可控的,即可以规定多少个进程同时工作。进程池里面的进程间的通信采用multiprocessing里面manage里面的queue队列来实现。主进程不会等待进程池结束后结束,这时我们需要关闭进程池不在接收子进程,然后加入主进程

    多进程稳定性强,但耗费资源太多,一般用于计算密集型。多线程运行速度一般,消耗资源比进程要小,但由于gui锁的存在,线程不是真正意义上的多任务,一般不使用;协程运行速度快,消耗资源小于线程,一般多用于爬虫,网络服务请求

    相关文章

      网友评论

          本文标题:简单了解进程、线程、协程

          本文链接:https://www.haomeiwen.com/subject/cftrdftx.html