随笔分类 -  Python

摘要:Set操作、Set集合就是不允许重复的列表 (无序集合) sadd(name,values) # name对应的集合中添加元素 scard(name) # 获取name对应的集合中元素个数 sdiff(keys, *args) 在第一个name对应的集合中且不在其他name对应的集合的元素集合 sd 阅读全文
posted @ 2018-01-18 19:22 kevin.Xiang 阅读(290) 评论(0) 推荐(0)
摘要:List操作,redis中的List在在内存中按照一个name对应一个List来存储。 注:列表存入 从右到左 如图: lpush(name,values) # 在name对应的list中添加元素,每个新的元素都添加到列表的最左边 # 如: # r.lpush('oo', 11,22,33) # 保 阅读全文
posted @ 2018-01-18 18:58 kevin.Xiang 阅读(176) 评论(0) 推荐(0)
摘要:hash表现形式上有些像pyhton中的dict,可以存储一组关联性较强的数据 , redis中Hash在内存中的存储格式如下图: hset(name, key, value) # name对应的hash中设置一个键值对(不存在,则创建;否则,修改) # 参数: # name,redis的name 阅读全文
posted @ 2018-01-18 14:44 kevin.Xiang 阅读(1235) 评论(0) 推荐(0)
摘要:String操作,redis中的String在在内存中按照一个name对应一个value来存储。如图: set(name, value, ex=None, px=None, nx=False, xx=False) # 在Redis中设置值,默认,不存在则创建,存在则修改 参数: ex,过期时间(秒) 阅读全文
posted @ 2018-01-18 14:16 kevin.Xiang 阅读(250) 评论(0) 推荐(0)
摘要:缓存服务:mongodb、redis、memcache mongodb:早期的缓存系统,直接持久话,数据即存内存也同步到硬盘。 redis:主流缓存系统,半持久化,默认存在内存,需要手动调用存在硬盘,可通过需求配置。 memcache:轻量级缓存服务,只能存在内存,不能持久化。 mongodb:早期 阅读全文
posted @ 2018-01-18 12:58 kevin.Xiang 阅读(3254) 评论(1) 推荐(0)
摘要:远程调用方法:R(remote) P(procedure) C(call) 为了说明如何使用RPC服务,我们将创建一个简单的客户端类。 它将公开一个名为call的方法,它发送一个RPC请求和块,直到收到响应。 注:可以实现多消费端访问 , 它会通过 uuid匹配 循环进行指定的处理对应。 rpc的实 阅读全文
posted @ 2018-01-17 18:35 kevin.Xiang 阅读(2585) 评论(0) 推荐(0)
摘要:消费端recv设置 注:设置消费端处理完一条消息后再发另一条 channel.basic_qos(prefetch_count=1) 由于每一条机器的处理速度不同,所以我们这里就会对应,机器的性能来进行调节,使用如下命令。 #_*_coding:utf-8_*_ import pika,time # 阅读全文
posted @ 2018-01-17 18:25 kevin.Xiang 阅读(563) 评论(0) 推荐(0)
摘要:Exchange 在RabbitMQ下进行广播模式需要用到,exchange这个参数,它会把发送的消息推送到queues队列中,exchange必须要知道,它接下来收到的消息要分给谁,是要发给一个queue还是发给多个queue,还是要删除,这些动作都取决于exchange的传入参数。 Exchan 阅读全文
posted @ 2018-01-17 17:36 kevin.Xiang 阅读(1348) 评论(0) 推荐(0)
摘要:RabbitMQ消息持久化:就是将队列中的消息永久的存放在队列中。 处理方案: # 在实例化时加入durable=True来确认消息的实例化,客户端服务端都要写 channel.queue_declare(queue='hello1',durable=True) 注:只持久化了队列,并没有持久化消息 阅读全文
posted @ 2018-01-15 18:44 kevin.Xiang 阅读(896) 评论(0) 推荐(0)
摘要:1.收消息:一对多,默认依次轮询的发给每个消费端。 2.消息确认:默认RabbitMQ不会设置no_ack=Ture,意思是,当生产者给消费者发送发送消息时,消费者处理这个消息,处理完后会手动确认发送ACK确认给服务端。 3.如果生产端没有收到确认,这个消息就会一直轮询给每个消费端,直到生产端收到a 阅读全文
posted @ 2018-01-15 18:40 kevin.Xiang 阅读(445) 评论(0) 推荐(0)
摘要:python内的队列queue 线程 queue:不同线程交互,不能夸进程 线程 queue:不同线程交互,不能夸进程 进程 queue:只能用于父进程与子进程,或者同一父进程下的多个子进程,进行交互 进程 queue:只能用于父进程与子进程,或者同一父进程下的多个子进程,进行交互 注:不同的两个独 阅读全文
posted @ 2018-01-15 18:33 kevin.Xiang 阅读(362) 评论(0) 推荐(0)
摘要:selectors模块 此模块允许基于选择模块原语构建高级别和高效的I / O多路复用。 鼓励用户使用此模块,除非他们想要精确控制使用的os级别的原语。 注:selectors也是包装了select高级的包装内置函数,它包装了select与epoll,优先使用epoll windos内只支持sele 阅读全文
posted @ 2018-01-06 20:07 kevin.Xiang 阅读(1843) 评论(0) 推荐(0)
摘要:Python select Python的select()方法直接调用操作系统的IO接口,它监控sockets,open files, and pipes(所有带fileno()方法的文件句柄)何时变成readable 和writeable, 或者通信错误,select()使得同时监控多个连接变的简 阅读全文
posted @ 2018-01-06 19:49 kevin.Xiang 阅读(2866) 评论(0) 推荐(0)
摘要:说明: 说明: 对于一次IO访问(以read举例),数据会先被拷贝到操作系统内核的缓冲区中,然后才会从操作系统内核的缓冲区拷贝到应用程序的地址空间。所以说,当一个read操作发生时,它会经历两个阶段: 1. 等待数据准备 (Waiting for the data to be ready) 2. 将 阅读全文
posted @ 2018-01-05 15:48 kevin.Xiang 阅读(521) 评论(0) 推荐(0)
摘要:注:Unix \ Linux 环境下的network IO 用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。为了保证 阅读全文
posted @ 2018-01-05 15:29 kevin.Xiang 阅读(979) 评论(0) 推荐(0)
摘要:事件驱动 事件驱动 gevent协程可实现自动切换,协程在遇到IO时会进行切换,到另外一个请求,那协程是如何得知在什么时候在切换回去呢? 通常,我们写服务器处理模型的程序时,有以下几种模型: (1)每收到一个请求,创建一个新的进程,来处理该请求; (2)每收到一个请求,创建一个新的线程,来处理该请求 阅读全文
posted @ 2018-01-05 15:23 kevin.Xiang 阅读(2003) 评论(0) 推荐(0)
摘要:socket多并发 socket可以实现单个客户端进行请求访问,它可以通过socketserver来实现并发功能呢,socketserver是通过启用多线程实现并发,在这里我们也可以通过gevent协程来实现单个线程下的多并发。 socket server: import gevent from g 阅读全文
posted @ 2018-01-05 15:10 kevin.Xiang 阅读(3336) 评论(0) 推荐(0)
摘要:简单爬虫实例: 功能:通过urllib.request实现网站爬虫,捕获网站内容。 from urllib import request def f(url): print("GET:%s"% url) # 实例化 resp = request.urlopen(url) # data就是下载的网页 阅读全文
posted @ 2018-01-04 17:55 kevin.Xiang 阅读(444) 评论(0) 推荐(0)
摘要:Gevent Gevent Gevent 是一个第三方库,可以轻松通过gevent实现并发同步或异步编程,在gevent中用到的主要模式是Greenlet, 它是以C扩展模块形式接入Python的轻量级协程。 Greenlet全部运行在主程序操作系统进程的内部,但它们被协作式地调度。 # geven 阅读全文
posted @ 2018-01-04 17:40 kevin.Xiang 阅读(1020) 评论(0) 推荐(0)
摘要:协程: 1.协程,又称微线程,纤程。英文名Coroutine。 2.协程是跑在线程内的单线程,串行没有锁。 3.协程是一种用户态的轻量级线程。 4.协程CPU是访问不到的,协程是用户自己控制的。 协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先 阅读全文
posted @ 2018-01-04 17:36 kevin.Xiang 阅读(218) 评论(0) 推荐(0)