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

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

回顾

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

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

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

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

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

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

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

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

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

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

时间: 2024-10-08 08:13:24

网络编程之异步IO,rabbitMQ笔记的相关文章

iOS网络编程(三) 异步加载及缓存图片---->SDWebImage

@SDWebImage提供一个UIImageView的类别以支持加载来自网络的远程图片.具有缓存管理.异步下载.同一个URL下载次数控制和优化等特征. @SDWebImage的导入1.https://github.com/rs/SDWebImage 下载SDWebImage开源包2.将类包拖入工程,再导入MapKit.framework.ImageIO.framework两个框架3.SDWebImage是支持ARC的,在MRC的工程中要注意,可参考MRC工程配置ARC4.注意:SDWebImag

Python高级编程和异步IO并发编程

Python高级编程和异步IO并发编程网盘地址:https://pan.baidu.com/s/1eB-BsUacBRhKxh7qXwndMQ 密码: tgba备用地址(腾讯微云):https://share.weiyun.com/5Z3x9V0 密码:7cdnb2 针对Python高级编程和异步IO并发编程,把每个Python高级知识点从起因到原理讲透的课程全网难寻 第1章 课程简介第2章 python中一切皆对象第3章 魔法函数第4章 深入类和对象第5章 自定义序列类第6章 深入python

UNIX网络编程:卷2-读书笔记

1. Unix进程间的信息共享可以有多种方式.如图: (1)两个进程共享存留于文件系统中的某个文件上的某些信息.为访问这些信息,每个进程都得穿越内核(例如read,write,lseek等).某种形式的同步也是必要的. (2)两个进程共享驻留于内核中的某些信息.管道,System V消息队列和System V信号量都是这种方式.每次操作都设计对内核的一次系统调用. (3)两个进程有一个双方都能访问的共享内存区.可以不需要涉及内核而访问其中的数据.需要某种形式的同步. 2. IPC对象的持续性,如

UNIX网络编程:卷1-读书笔记

1. if ( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) err_sys("socket error"); 作为一种编码风格,作者总是在这样的两个左括号间加一个空格,提示比较运算的左侧同时也是一个赋值运算. 2. bzero不是ANSI C函数,比memset更好记忆(只有2个参数) 3. htons("主机到网络短整数"),inet_pton("呈现形式到数值") 4. 每当一个套接字

【Unix网络编程】chapter6 IO复用:select和poll函数

chapter6 6.1 概述 I/O复用典型使用在下列网络应用场合. (1):当客户处理多个描述符时,必须使用IO复用 (2):一个客户同时处理多个套接字是可能的,不过不叫少见. (3):如果一个TCP服务器既要处理监听套接字,又要处理已连接套接字. (4):如果一个服务器既要处理TCP,又要处理UDP (5):如果一个服务器要处理多个服务或多个协议 IO复用并非只限于网络,许多重要的应用程序也需要使用这项技术. 6.2 I/O模型 在Unix下可用的5种I/O模型的基本区别: (1)阻塞式I

在网络编程中的io流小问题

在客户端和服务端调用io流进行传输数据的过程中,当将数据write到outputstream中,需要及时刷新,否则会发生io阻塞. 在输入数据的时候,最好选用BufferedReader,因为readLine()方法自带换行,可以输入一段之后直接换行; 而在输出数据的时候,最好选择PrintWriter,并且构造方法选用true,打开自动刷新,调用println方法可以直接输出数据并刷新! 原文地址:https://www.cnblogs.com/doveshelly/p/8526008.htm

Linux网络编程三、 IO操作

当从一个文件描述符进行读写操作时,accept.read.write这些函数会阻塞I/O.在这种会阻塞I/O的操作好处是不会占用cpu宝贵的时间片,但是如果需要对多个描述符操作时,阻塞会使同一时刻只能处理一个操作,从而使程序的执行效率大大降低.一种解决办法是使用多线程或多进程操作,但是这浪费大量的资源.另一种解决办法是采用非阻塞.忙轮询,这种办法提高了程序的执行效率,缺点是需要占用更多的cpu和系统资源.所以,最终的解决办法是采用IO多路转接技术. IO多路转接是先构造一个关于文件描述符的列表,

《Unix网络编程》卷2 读书笔记 第2章- Posix IPC

1. 概述 Posix IPC 包括:Posix消息队列.Posix信号量.Posix共享内存区 Posix IPC在访问它们的函数和描述它们的信息上有一些类似点. 本章讲述所有这些共同属性:用于标识的路径名.打开或创建时指定的标志.访问权限. Posix IPC 函数汇总 2. IPC名字 三种类型的Posix IPC都使用“Posix IPC名字”进行标识.mq_open.sem_open.shm_open这三个函数的第一个参数就是这样的一个名字. 对于Linux,Posix IPC名字必须

《Unix网络编程》卷2 读书笔记 第3章- System V IPC

1. 概述 三种类型的System V IPC:System V 消息队列.System V 信号量.System V 共享内存区 System V IPC在访问它们的函数和内核为它们维护的信息上共享许多类似点.本章讲述所有这些共同属性. 下图汇总了所有System V IPC 函数 2. key_t键.ftok函数 头文件sys/types.h把数据类型key_t定义为一个整数,通常是一个至少32位的整数 #include <sys/ipc.h> key_t ftok (const char