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

Posted dion至君

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络编程之异步IO,rabbitMQ笔记相关的知识,希望对你有一定的参考价值。

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

回顾

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

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

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

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

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

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

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

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

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

以上是关于网络编程之异步IO,rabbitMQ笔记的主要内容,如果未能解决你的问题,请参考以下文章

8-3:协程异步IO数据库rabbitMQ队列redis缓存

RabbitMQ学习笔记

RabbitMQ学习笔记

Java基础知识强化之网络编程笔记24:Android网络通信之 AndroidAsync(基于nio的异步通信库)

RabbitMQ笔记SpringBoot整合RabbitMQ之simple容器(消费者)

Python 10--协程异步IOredis缓存rabbitMQ队列