`
Zhongwei_leg
  • 浏览: 555858 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

Tornado 源码阅读笔记(一)

 
阅读更多

先看一下 Tornado 的 ioloop.py

 

import select
# Choose a poll implementation. Use epoll if it is available, fall back to
# select() for non-Linux platforms
if hasattr(select, "epoll"):
    # Python 2.6+ on Linux
    _poll = select.epoll
elif hasattr(select, "kqueue"):
    # Python 2.6+ on BSD or Mac
    _poll = _KQueue
else:
    try:
        # Linux systems with our C module installed
        import epoll
        _poll = _EPoll
    except:
        # All other systems
        import sys
        if "linux" in sys.platform:
            logging.warning("epoll module not found; using select()")
        _poll = _Select

 

可以看到,在 Mac 下,使用的是 kqueue.

 

什么是 kqueue 呢?

 

kqueue 是 FreeBSD 上的一种的多路复用机制。它是针对传统的 select/poll 处理大量的文件描述符性能较低效而开发出来的。注册一批描述符到 kqueue 以后,当其中的描述符状态发生变化时,kqueue 将一次性通知应用程序哪些描述符可读、可写或出错了。
kqueue 支持多种类型的文件描述符,包括 socket、信号、定时器、AIO、VNODE、PIPE。

 

详细介绍可以 Google 一下 “Kqueue: A generic and scalable event notification facility” (Kqueue: 一种通用且可扩展的事件通知机制) 这个 PDF 文档。

 

 

 

 

参考列表:

1。使用 kqueue 在 FreeBSD 上开发高性能应用服务器

http://www.ibm.com/developerworks/cn/aix/library/1105_huangrg_kqueue/

 

 

分享到:
评论

相关推荐

    learning-tornado-src:Tornado框架源码学习笔记

    tornado作为web框架和异步网络库,代码量过多,因此在分析tornado源码时,可以选择一些比较重要的模块来阅读,方式:current.py,gen.py,tcpserver.py,httpserver.py,ioloop .py,iostream.py,web.py等 ...

    annotated-py-tornado:对tornado源码进行注释

    项目说明:对tornado框架原始码,添加学习注释目前选择的版本: 1.0.0这是tornado的第一版,代码应该是最简洁的4.2.1简单对github上使用tornado框架的版本,进行初步统计,发现使用该版本的项目最多。故不再选择2.x...

    千峰python课件笔记+源码 (凯哥)

    第一章: 千锋python基础 千锋python基础教程:1、第一个python程序与数据存储 '千锋python基础教程:2、print&input;与变量和运算符' 千锋python基础教程:3、字符串与循环中的while '千锋python基础教程:4、...

    基于vxwork实时系统软件框架实验

    源代码部分则提供了实际操作的机会,你可以通过阅读和修改代码来加深对VxWorks的理解。例如,你可能会看到如何创建一个简单的任务,如何在任务之间传递数据,或者如何处理中断。 总的来说,这个实验将使你熟悉...

    自我学习笔记--LUA;python:网络编程等

    最后,【压缩包子文件的文件名称列表】中提到的“文件夹”可能表示压缩包内包含一个或多个文件夹,每个文件夹可能对应一个主题或项目,里面可能有笔记文档、源代码、练习案例等。用户在解压后可以逐个浏览,根据目录...

    GoAhead移植笔记.doc

    - 将生成的`webrom.c`文件集成到Tornado编译的GoAhead WebServer源代码中,这样服务器就能在启动时加载这些网页。 - 编译整个GoAhead WebServer项目,生成适用于目标硬件平台的可执行文件。 - 将编译后的Web...

    Python爬虫教程+游戏+框架全套源码课件+96套视频教程(

    4. **源码课件**:这些源码课件提供了实际项目的实例,你可以通过阅读和分析代码来学习如何构建完整的爬虫项目,理解数据抓取、数据清洗、数据存储的全过程。同时,课件中的错误处理和反反爬虫策略也是学习的重点。 ...

    QQ聊天机器人

    文件列表中的【HXQQTalkV16.exe】可能是QQ聊天机器人的执行程序,开发者可能使用了某种编译器将源代码编译为可执行文件,用户可以直接运行来体验机器人功能。而【Readme-说明.htm】则是项目文档,通常包含项目的简介...

    jupyter安装技巧

    对于初学者来说,Jupyter Notebook是一个很好的学习工具,因为它允许你一步步探索代码,同时记录和展示结果。对于专业开发者,Jupyter Notebook则是一个高效的原型开发和报告编写平台。 总之,Jupyter Notebook是...

Global site tag (gtag.js) - Google Analytics