码迷,mamicode.com
首页 > 其他好文 > 详细

网络编程之异步IO,rabbitMQ笔记

时间:2018-02-21 00:24:08      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:展开   网络   let   位置   event   全局   轻量   数据   一个   

对于网络并发编程而言,多线程与多进程算是最常见的需求场景了。毕竟网站开放就是想要更多的流量访问的。

回顾

回顾下之前学过的关于线程,进程和协程的知识点

IO密集型任务--用多线程更好
计算密集型任务
--用多进程更好

  线程概念:计算机中工作的最小单元
  进程:默认有主线程,可以有多线程共存,并共享内存资源。
  协程:使用进程中的一个线程去做多个任务,微线程pypy
  GIL:全局解释器锁,python特有,用于在进程中对所有线程加锁,保证同时只能有一个线程被CPU调度

 一句话说明什么是协程:协程是一种用户态的轻量级线程。

协程的特点:协程能保留上一次调用时的状态(即所有局部状态的一个特定组合),每次过程重入时,就相当于进入上一次调用的状态,换种说法:进入上一次离开时所处逻辑流的位置。

那么符合什么条件我们可以称之为协程?
协程需要满足四个条件:

  1. 必须在只有一个单线程里实现并发
  2. 修改共享数据不需加锁
  3. 用户程序里自己保存多个控制流的上下文栈
  4. 一个协程遇到IO操作自动切换到其它协程

当然,协程也有自身的优缺点,这里不展开。

在python中,我们可以轻松通过gevent实现并发同步或异步编程,在gevent中用到的主要模式是Greenlet, 它是以C扩展模块形式接入Python的轻量级协程。 Greenlet全部运行在主程序操作系统进程的内部,但它们被协作式地调度。

网络编程之异步IO,rabbitMQ笔记

标签:展开   网络   let   位置   event   全局   轻量   数据   一个   

原文地址:https://www.cnblogs.com/dion-90/p/8456036.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!