python进程,线程,协程的区别

协程

协程,又称微线程,纤程。英文名Coroutine。协程,利用线程在等待某个资源的期间执行其他函数,切换资源消耗非常小,协程效率相当快。

协助程序,线程和进程都是抢占性特点,线程和进程之间的切换我们不能参与,协程是非抢占性特点,可以由用户控制切换

1.yield函数–生成器

2.greenlet模块

3.gevent模块

进程、线程、协程的区别?

进程是资源分配的单位,真正执行代码的是线程,操作系统真正调度的是线程。

进程没有线程效率高,进程占用资源多,线程占用资源少,比线程更少的是协程。

协程依赖于线程、线程依赖于进程,进程一死线程必挂,线程一挂协程必死

一般不用多进程,可以考虑使用多线程,如果多线程里面有很多网络请求,网络可能会有堵塞,此时用协程比较合适。

就比如进程,线程,协程可以比喻成一个洗衣间,里面有很多洗衣机,每个洗衣机都有很多功能

或者:

进程:每个人都领一套工具(环境,上下文)去干活,人多(核多)就可以做的更快。

线程:一个人有一套工具后干活,但要干很多工作,先干哪个要听老板的(系统),遇见需要等待的事,老板会叫你先干别的。但老板不明白你干的什么活,比如你挖一个坑埋一个萝卜然后盖上土,结果他让你挖坑,埋土,放萝卜。这时候就要用锁告诉老板这个必须先放了萝卜才能埋土。

协程:一个人有一套工具后干活,但要干很多工作,先干哪个听自己的,同样遇见要等待的事情,你自个会先干别的,比如现在没有萝卜,你就不能盖土,可以继续挖下一个坑,等有萝卜时,执行放萝卜,盖土,对于老板来说,协程内的工作属于一个包的事,他会下命令让你种萝卜,但不会规定你种萝卜的顺序。正是因为省去了老板这一工作量,才大大提高了效率,毕竟是领导的工作量,先洗澡还先吃饭也要问领导不得慢成啥。

:一个人有一套工具后干活,但要干很多工作,先干哪个完全按写好的清单来,遇见要等待的事情,就等他完了再下一个

协程的好处:

无需线程上下文切换的开销

无需原子操作锁定及同步的开销

方便切换控制流,简化编程模型

高并发+高扩展性+低成本:一个CPU支持上万的协程都不是问题。所以很适合用于高并发处理。

缺点:

无法利用多核资源:协程的本质是个单线程,它不能同时将 单个CPU 的多个核用上,协程需要和进程配合才能运行在多CPU上.当然我们日常所编写的绝大部分应用都没有这个必要,除非是cpu密集型应用。

进行阻塞(Blocking)操作(如IO时)会阻塞掉整个程序

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值