python多线程是并发还是并行_Python中的多任务,并行,并发,多线程,多进程,协程区别...

多任务

CPU承担了所有的计算任务。一个CPU在一个时间切片里只能运行一个程序。当我们想同时运行多于一个程序的时候,就是多任务,例如同时运行微信,QQ,浏览器等等。多任务的目的是提升程序的执行效率,更充分利用CPU的资源。并行

当任务数≤ CPU核数时,每一个任务都有对应的CPU来处理执行,多个务同时执行,互不抢占CPU资源,可以同时进行,这种方式我们称之为并行(Parallel)。并发

当任务数≥ CPU时,多个任务在执行,则每个CPU不可能真正同时进行一个以上的任务,多个任务只能把CPU运行时间划分成若干个时间段,在一个时间段的任务代码运行时,其它任务处于挂起状态。.这种方式我们称之为并发(Concurrent)。实际上总有一些任务不在执行,因为切换任务的速度相当快,看上去像一起执行而已。

Python中的进程、线程、协程进程(multiprocessing模块)Python_多进程详解_Baymax_Bai的博客-CSDN博客​blog.csdn.nete424f39f411876527f3772820277c1a5.png

进程是系统进行资源分配和调度的独立单位。我们用流水线来进行解释进程:假如有9000个零件需要加工,这9000个零件加工就代表9000个任务,即多任务。我们现在有3条流水线,这3条流水线就代表3个进程,每个进程中有1个员工在加工零件。3个进程之间互不影响,可以同时工作。

线程(threading模块)Python_多线程详解_Baymax_Bai的博客-CSDN博客​blog.csdn.nete424f39f411876527f3772820277c1a5.png

线程是进程的实体,是CPU调度和分派的基本单位。线程是属于进程的,线程运行在进程空间内。我们用流水线来进行解释线程:假如有9000个零件需要加工,这9000个零件加工就代表9000个任务,即多任务。我们现在有1条流水线,这1条流水线就代表1个进程,这1个进程中有3个员工在加工零件。那么3个员工就代表3个线程,线程之间互不影响,可以同时工作。

协程(gevent,属于第三方模块,需要下载安装)

pip install geventPython_协程详解_Baymax_Bai的博客-CSDN博客​blog.csdn.nete424f39f411876527f3772820277c1a5.png

协程也是线程,称微线程,是比线程更小的执行单元,解决的是IO的操作。协程最大的优势就是协程极高的执行效率。因为子程序切换不是线程切换,而是由程序自身控制,因此,没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势就越明显。协程也存在着切换,这种切换是由我们用户来控制的。我们用流水线来进行解释线程:假如有9000个零件需要加工,这9000个零件加工就代表9000个任务,即多任务。我们现在有1条流水线,这1条流水线就代表1个进程,这1个进程中有1个员工在加工零件。当第1个零件加工的时候,在第1个零件加工等待期间(程序挂起,等待),飞速切换到第2个零件处加工,在第2个零件加工等待期间,飞速切换到第3个零件处加工,待第1个零件加工等待结束前切回第1个零件处,如此往复。协程之间不同时工作。

区别一个程序至少有一个进程,一个进程至少有一个线程;

线程的划分尺度小于进程(资源比进程少),使得多线程程序的并发性高;

进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率;

线程不能够独立执行,必须依存在进程中;优缺点:

线程执行开销小,但不利于资源的管理和保护;而进程正相反;当我们要完成的任务有耗时任务,属于IO密集型任务时,我们使用协程来执行任务会节省很多的资源,并且可以极大的利用到系统的资源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值