tornado 菜鸟看源码关于 epoll 的问题

2016-03-06 19:52:03 +08:00
 triThirty

最近想在 handler 中些自己的异步程序,原本以为只要通过 coroutine 装饰以后返回个 future 对象就可以让程序实现异步,但尴尬的是测试后发现然!并!卵!
所以兴致勃勃的去看了 tornado 源码,在看到 ioloop 将 socket 注册事件以及回调函数后就懵逼了,因为,虽然这样是注册了,但是之后代码里面似乎并没体现出 tornado 如何在注册的事件发生之后怎么回调回调函数。后来想了下, ioloop 的的底层是 Linux 的 epoll ,这样一来, tornado 是不是把调用回调函数的任务交给了操作系统?而我们只用关心向操作系统指明回调函数以及调用回调函数的事件就行了????
以上是我的理解,如果不对请大神指出~~~~

5710 次点击
所在节点    Python
23 条回复
zhicheng
2016-03-08 11:35:13 +08:00
epoll 是一个机制,不是黑魔法,并不会让你的计算 “消失” , cpu bound 的应用解决办法是你多开几个进程(缓解)或 使用队列 (解决)比如 celery 。

不过我怀疑是你的代码写得有问题, XML 解析能有多慢。
triThirty
2016-03-08 11:38:16 +08:00
@zhicheng 谢谢,了解~~~我说的比喻的不准确,给后来看贴的小伙伴说明下,我这里说的解析 xml 是想比喻下耗时任务。
triThirty
2016-03-09 11:24:27 +08:00
http://zqdevres.qiniucdn.com/data/20100927213110/index.html 这是一个 lunix 下网络编程的极好的文章,给有需要的小伙伴。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/261520

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX