Python:Tornado 第一章:异步及协程基础:第二节:Python关键字yield

2018-10-08
阅读 2 分钟
3.7k
协程是Tornado中进行异步I/O代码开发的方法。协程使用了Python关键字yield将调用者挂起和恢复执行。所以在学习协程之前,我们先熟悉一下yield的概念和使用方法,而要想理解yield,需要先理解迭代器的概念。

Python:Tornado 第一章:异步及协程基础:第一节:同步与异步I/O

2018-10-08
阅读 1 分钟
4k
众所周知,CPU的运行效率高于磁盘的存储,也高于网络请求,这就导致CPU对数据的处理和数据的存储或者网络请求(I/O操作)步伐不一致,此时可以选择I/O操作同步或者异步。

Python:Tornado 开篇

2018-10-08
阅读 1 分钟
5.8k
Tornado是一个可扩展的非阻塞Web服务器以及相关工具的总称。Tornado每秒可以处理数以千计的连接,所以对于实时Web服务来说,Tornado是一个理想的Web框架。

Python--Redis实战:第三章:Redis命令:第二节:列表

2018-10-07
阅读 3 分钟
4.8k
在之前我们介绍过,Redis的列表允许用户从序列的两端推入或者弹出元素、获取列表元素、以及执行各种常见的列表操作。除此之外,列表还可以用来存储任务信息、最近浏览过的文章、常用联系人信息。

Python--Redis实战:第三章:Redis命令:第一节:字符串

2018-10-07
阅读 4 分钟
3.8k
上一篇文章: Python--Redis实战:第二章:使用Redis构建Web应用:第五节:网页分析下一篇文章:Python--Redis实战:第三章:Redis命令:第二节:列表 在Redis里面,字符串可以存储以下三种类型的值: 字节串【byte string】 整数 浮点数 用户可以通过给定一个任意的数值,对存储着整数或者浮点数的字符串执行自增【incr...

Python--Redis实战:第二章:使用Redis构建Web应用:第五节:网页分析

2018-10-07
阅读 2 分钟
3k
网站可以从用户的访问、交互、购买行为中收集到有价值的信息。例如:如果我们只想关注那些浏览量最高的页面,那么我们可以尝试修改页面的格局、配色甚至是页面上展示的其他链接。每一个修改尝试都能改变用户对一个页面或者后续页面的体验,或好或坏,甚至还能影响用户的购买行为。

Python--Redis实战:第二章:使用Redis构建Web应用:第四节:数据行缓存

2018-10-06
阅读 3 分钟
3.3k
上一篇文章: Python--Redis实战:第二章:使用Redis构建Web应用:第三节:网页缓存下一篇文章:Python--Redis实战:第二章:使用Redis构建Web应用:第五节:网页分析 到目前为止,我们已经: 将原本由关系数据库和网页浏览器实现的登录和访客会话转移到了Redis上面实现; 将原本有关系数据库实现的购物车也放到了Redis...

Python--Redis实战:第二章:使用Redis构建Web应用:第三节:网页缓存

2018-10-06
阅读 2 分钟
3.3k
在动态生成网页的时候,通常会使用模板语言【templating language】来简化网页的生成操作。需要手写每个页面的日子已经一去不复返:现在的Web页面通常由包含首部、尾部、侧栏菜单、工具条、内容域的模板生成,有时候模板还用于生成JavaScript。

Python--Redis实战:第二章:使用Redis构建Web应用:第二节:使用Redis实现购物车

2018-10-06
阅读 2 分钟
3.8k
网景(Netscape)公司在20世纪90年代中期最先在网络中使用了cookie,这些cookie最终变成了我们现在使用的cookie。cookie最初的意图是在于为网络销售商提供一种购物车,让用户可以收集他们想要购买的商品。

Python--Redis实战:第二章:使用Redis构建Web应用:第一节:登录和cookie缓存

2018-10-04
阅读 4 分钟
4.2k
从高层次的角度来看,Web应用就是通过HTTP协议对网页浏览器发送的请求进行响应的服务器或者服务【service】。一个Web服务器对请求进行响应的典型步骤如下:

Python--Redis实战:第一章:初识Redis:第三节:你好Redis-文章投票试炼

2018-10-04
阅读 5 分钟
4k
最近几年,越来越多的网站开始提供对网页链接、文章或者稳赢进行投票的功能,这些网站会根据文章的发布时间和文章获得的投票数量计算出一个评分,然后根据这个评分来决定如何排序和展示文章。

Python--Redis实战:第一章:初识Redis:第二节:Redis数据结构简介

2018-09-24
阅读 5 分钟
5.1k
Redis可以存储键与5种不同的数据结构类型之间的映射,这5中数据结构类别分别是:STRING(字符串)、LIST(列表)、SET(集合)、HASH(散列)和ZZET(有序集合)。

Python--Redis实战:第一章:初识Redis:第一节:Redis简介

2018-09-23
阅读 3 分钟
4.9k
Redis是一个远程内存数据库,它不仅性能强劲,而且还具有复制特性以及为解决问题而生的独一无二的数据模型,是一个速度非常快的非关系数据库(no-relational database)。

Pyhton--Redis实战:Mac brew安装redis

2018-09-23
阅读 1 分钟
4.2k
下一篇文章:Python--Redis实战:第一章第一节:Redis简介 1、安装redis {代码...} Error:Failed to download resource "reds" // 下载reds失败 不过不需要担心,brew会已经从其它地方下载并正确安装了 配置文件路径: /usr/local/etc/redis.conf 2、启动redis(可选) {代码...} 3、添加至开机启动项(可选) {代码......

Python行结构与缩进、 标识符和保留字

2018-09-10
阅读 2 分钟
6.3k
上一篇文章:Python词法约定和语法专题:总览下一篇文章:Python词法约定和语法专题:总览Python词法约定和语法专题:总览 行结构 Python程序中的每一条语句都以换行符结束。使用续行符()可将长语句分为几行,如下所示: {代码...} 另外对于三引号字符串、列表、元组、字典的定义可以不使用续行符。 一般来说,包含在...

Python线程专题10:queue、多线程按顺序执行

2018-09-09
阅读 3 分钟
10.7k
使用 队列一般可以简化多线程的程序。例如,可以使用共享队列将线程连接在一起,而不必依赖锁的保护。在这种模型下,工作者线程一般充当数据的消费者。

Python线程专题9:线程终止与挂起、实用工具函数

2018-09-09
阅读 2 分钟
7.8k
线程没有任何方法可用于强制终止或挂起。这是设计上的原因,因为编写线程程序本身十分复杂。例如:如果某个线程已经获取了锁,在它能够释放锁之前强制终止或挂起它,将导致整个应用程序出现死锁。此外,终止时一般不能简单的【释放所有的锁】,因为复杂的线程同步经常涉及锁定和清楚锁定操作,而这些操作在执行时的次序...

Python线程专题8:使用锁的注意事项

2018-09-09
阅读 1 分钟
2.9k
使用诸如Lock、RLock、Semphore之类的锁原语时,必须多加小心,锁的错误使用很容易导致死锁或相互竞争。依赖锁的代码应该保证当出现异常时可以正常的释放锁。

Python线程专题7:条件变量

2018-09-09
阅读 1 分钟
4.4k
条件变量时构建在另一个锁上的同步原语,当需要线程关注特定的状态变化或事件发生时将使用这个锁。典型的用法是生产者与消费者问题,其中一个线程生产的数据提供给另外一个线程使用。

Python线程专题6:事件

2018-09-09
阅读 1 分钟
3k
上一篇文章:Python线程专题5:信号量与有边界的信号量下一篇文章:Python线程专题7:条件变量事件用于在线程之间通信。一个线程发送【事件】信号,一个或多个其他线程等待它。 Event实例管理着一个内部标志,可以使用set()方法将它置为True,或者使用clear()方法将它重置为False。wait()方法将阻塞,直到标志为True。

Python线程专题5:信号量与有边界的信号量

2018-09-09
阅读 1 分钟
3.8k
信号量是一个基于计数器的同步原语,每次调用acquire()方法时,此计数器减1,每次调用release()方法时此计数器加1.。如果计数器为0,acquire()方法将会阻塞,直到有其他线程调用release()方法为止。

Python线程专题4:Timer对象、Lock对象、Rlock对象

2018-09-09
阅读 1 分钟
3.4k
原始锁(互斥锁)是一个同步原语,状态有两种:『已锁定』、『未锁定』。如果状态已经锁定,尝试获取锁将阻塞,直到锁被释放为止。如果有多个线程等待获取锁,当锁被释放时,只有一个线程获得它,获取顺序是不定的。

Python线程专题3:thread对象

2018-09-09
阅读 2 分钟
4.4k
上一篇文章:Python线程专题2:多线程共享全局变量下一篇文章:Python线程专题4:Timer对象、Lock对象、Rlock对象 Thread对象 Thread类用于表示单独的控制线程。 语法: {代码...} 常用属性于方法 {代码...} 实例1:利用Thread对象,简单创建一个线程,并启动一个函数 代码: {代码...} 结果: 实例2:通过继承Thread,实...

Python线程专题2:多线程共享全局变量

2018-09-09
阅读 1 分钟
6.7k
上一篇文章: Python线程专题1:多线程使用的必要性下一篇文章:Python线程专题3:thread对象 在一个进程内的所有线程共享全局变量。但多线程对全局变量的更改会导致变量值得混乱。 实例:验证同一个进程内所有线程共享全局变量 代码: {代码...} 结果: {代码...}

Python线程专题1:多线程使用的必要性

2018-09-09
阅读 2 分钟
3.1k
上一篇文章:Python线程专题纵览篇下一篇文章:Python线程专题2:多线程共享全局变量 在引入多线程之前,我们先来看一个非常简单的实例。 实例: {代码...} 结果:按照顺序依次打印 上面是单线程显示效果,现在我们来用多线程处理一下。在这之前,我们应该要知道,thread模块是python比较底层的模块, 为了方便我们控制th...

Python线程专题纵览篇

2018-09-09
阅读 1 分钟
3.5k
上一篇文章:Python进程专题完结篇:多进程处理的一般建议下一篇文章:Python线程专题1:多线程使用的必要性 进程VS线程 进程:能够完成多任务,比如在一个电脑上可以运行多个软件。线程:也能够完成多任务,但一般是在同一个程序内完成多任务,例如qq打开多个页面。 对吧方向 进程 线程 是否可以完成多任务 可以,比如一...

Python进程专题完结篇:多进程处理的一般建议

2018-09-02
阅读 1 分钟
4.4k
避免实用共享数据,尽可能使用消息传递和队列。实用消息传递时,不必过去担心同步、锁定和其它问题。当进程的数量增加时,它往往还能提供更好的扩展。

Python进程专题10:GIL

2018-09-02
阅读 1 分钟
4.9k
python解析器内部使用GIL(Global Interpreter Lock,全局解释器锁),在任意指定时刻,只允许单个python线程执行,无论系统上存在多少个可用的CPU核心,这也导致了python程序只能在一个处理器上运行。

Python进程专题9:关于进程的实用工具函数

2018-09-02
阅读 1 分钟
3.5k
上一篇文章:Python进程专题8:分布集群的消息传递下一篇文章:Python进程专题10:GIL 函数 解析 activite_children() 返回所有活动子进程的Process对象组成的列表 cpu_count() 返回系统上的cpu数量,如果能够确定的话 current_process() 返回当前进程的Process对象 freeze_support() 在实用各种打包工具(如py2exe)进行...

Python进程专题8:分布集群的消息传递

2018-09-02
阅读 2 分钟
4.4k
使用multiprocessing模块的程序不仅可以于运行在同一计算机的其它程序进行消息传递,还可以于位于不到计算机的远程系统程序进行消息传递。其中的multiprocessing.connection子模块包含该目的的函数和类: