两者解决的问题相似,都是在解决一个线程中的高并发问题 IO多路复用: I:input(输入的意思) O:output(输出的意思) 先用一个例子来引出IO多路复用 setblocking 两个概念: 非阻塞:不等待 异步:执行完某个任务后自动调用我给他的函数 爬取多个网站的并发解决如果现在要求要爬取 ...
分类:
其他好文 时间:
2018-09-13 18:28:53
阅读次数:
203
并发编程是网络编程中必须考虑的问题,实现并发的方式有多种:多进程,多线程,IO多路复用. python中调用的是操作系统的线程和进程. 进程: 进程表示资源分配的基本单位,是调度运行的基本单位.例如,用户运行一个程序时,系统就创建一个进程,为它分配资源,然后放入进程就绪队列.进程调度程序选中它,为它 ...
分类:
其他好文 时间:
2018-09-10 21:22:37
阅读次数:
233
C语言基础学习PYTHON——基础学习D10 20180906内容纲要: 1、协程 (1)yield (2)greenlet (3)gevent (4)gevent实现单线程下socket多并发 2、简单爬虫 3、select 4、IO多路复用 5、小结 6、练习 1 协程 协程又叫微线程,纤程。协 ...
分类:
编程语言 时间:
2018-09-07 00:57:25
阅读次数:
310
开发高性能网络程序时,windows开发者们言必称iocp,linux开发者们则言必称epoll。大家都明白epoll是一种IO多路复用技术,可以非常高效的处理数以百万计的socket句柄,比起以前的select和poll效率高大发了。我们用起epoll来都感觉挺爽,确实快,那么,它到底为什么可以高 ...
分类:
系统相关 时间:
2018-09-04 14:50:12
阅读次数:
207
IO多路复用之epoll总结1、基本知识 epoll是在2.6内核中提出的,是之前的select和poll的增强版本。相对于select和poll来说,epoll更加灵活,没有描述符限制。epoll使用一个文件描述符管理多个描述符,将用户关系的文件描述符的事件存放到内核的一个事件表中,这样在用户空间和内核空间的copy只需一次。2、epoll接口 epoll操作过程需要三个接口,分别如下:#i
分类:
其他好文 时间:
2018-08-29 18:02:35
阅读次数:
181
一、用非阻塞IO解决阻塞IO模型 import socket sk = socket.socket() sk.bind(('127.0.0.1',8080)) sk.listen() sk.setblocking(False) lst = [] del_lst = [] while 1: try: ...
分类:
其他好文 时间:
2018-08-29 01:14:36
阅读次数:
163
一.协程: 概念:是一个比线程更加轻量级的单位,是组成线程的各个函数 为什么要有协程: 想要在单线程内实现并发的效果.但因为Cpython有GIL锁,限制了在同一时间点,CPU只能执行一个线程,所以想要在执行一个线程的期间,充分利用cpu的性能,所以才有了想在单线程内实现并发的效果 cpu 为什么要 ...
分类:
其他好文 时间:
2018-08-28 21:11:51
阅读次数:
211
python 闯关之路四(下)(并发编程与数据库编程) 并发编程重点: 1 2 3 4 5 6 7 并发编程:线程、进程、队列、IO多路模型 操作系统工作原理介绍、线程、进程演化史、特点、区别、互斥锁、信号、 事件、join、GIL、进程间通信、管道、队列。 生产者消息者模型、异步模型、IO多路复用 ...
分类:
数据库 时间:
2018-08-11 12:28:45
阅读次数:
213
1.简介 希望通过这篇文章,可以回答以下几个问题? 在了解I/O多路复用之前,先来了解流的概念。 1.1流的概念 一个流可以文件、socket、pipe等可以进行IO操作的内核对象。不管是文件,还是套接字,还是管道,我们都可以把他们看作流。 从流中读取数据或者写入数据到流中,可能存在这样的情况:读取 ...
分类:
其他好文 时间:
2018-08-10 21:12:42
阅读次数:
133
I/O多路复用指:通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作 服务端 import socket sk1 = socket.socket() sk1.bind(('127.0.0.1',8001)) sk1.listen() sk2 ...
分类:
其他好文 时间:
2018-08-08 23:42:18
阅读次数:
245