先看一下 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/
分享到:
相关推荐
tornado作为web框架和异步网络库,代码量过多,因此在分析tornado源码时,可以选择一些比较重要的模块来阅读,方式:current.py,gen.py,tcpserver.py,httpserver.py,ioloop .py,iostream.py,web.py等 ...
项目说明:对tornado框架原始码,添加学习注释目前选择的版本: 1.0.0这是tornado的第一版,代码应该是最简洁的4.2.1简单对github上使用tornado框架的版本,进行初步统计,发现使用该版本的项目最多。故不再选择2.x...
第一章: 千锋python基础 千锋python基础教程:1、第一个python程序与数据存储 '千锋python基础教程:2、print&input;与变量和运算符' 千锋python基础教程:3、字符串与循环中的while '千锋python基础教程:4、...
源代码部分则提供了实际操作的机会,你可以通过阅读和修改代码来加深对VxWorks的理解。例如,你可能会看到如何创建一个简单的任务,如何在任务之间传递数据,或者如何处理中断。 总的来说,这个实验将使你熟悉...
最后,【压缩包子文件的文件名称列表】中提到的“文件夹”可能表示压缩包内包含一个或多个文件夹,每个文件夹可能对应一个主题或项目,里面可能有笔记文档、源代码、练习案例等。用户在解压后可以逐个浏览,根据目录...
- 将生成的`webrom.c`文件集成到Tornado编译的GoAhead WebServer源代码中,这样服务器就能在启动时加载这些网页。 - 编译整个GoAhead WebServer项目,生成适用于目标硬件平台的可执行文件。 - 将编译后的Web...
4. **源码课件**:这些源码课件提供了实际项目的实例,你可以通过阅读和分析代码来学习如何构建完整的爬虫项目,理解数据抓取、数据清洗、数据存储的全过程。同时,课件中的错误处理和反反爬虫策略也是学习的重点。 ...
文件列表中的【HXQQTalkV16.exe】可能是QQ聊天机器人的执行程序,开发者可能使用了某种编译器将源代码编译为可执行文件,用户可以直接运行来体验机器人功能。而【Readme-说明.htm】则是项目文档,通常包含项目的简介...
对于初学者来说,Jupyter Notebook是一个很好的学习工具,因为它允许你一步步探索代码,同时记录和展示结果。对于专业开发者,Jupyter Notebook则是一个高效的原型开发和报告编写平台。 总之,Jupyter Notebook是...