tornado学习笔记(一)

说明

高性能源于Tornado基于Epoll(unix为kqueue)的异步网络IO。因为tornado的单线程机制,一不小心就容易写出阻塞服务(block)的代码。不但没有性能提高,反而会让性能急剧下降。因此,探索tornado的异步使用方式很有必要。
tornado虽然以异步非阻塞高性能著称的框架,但默认不是异步非阻塞的,你需要添加两个装饰器@tornado.web.asynchronous和@tornado.gen.coroutine,
这样才算是异步非阻塞的.然而当你用tornado作为http服务器,同时用了requests库发送请求后,你会发现请求还是一个一个的处理,根本不是异步非阻塞的.
原因是requests库发送请求是阻塞的,它会阻塞整个tornado服务进程,为什么阻塞,原因是用 requests 的话能会 block 其他 http 请求。因为他无法注册到 ioloop 里面。只要这个 requests 请求结束, tornado 才会处理下一个 http 请求。

阅读全文

MongoDB之aggregate, pipeline及map_reduce

MongoDB聚合

聚合操作处理数据记录并返回计算结果。 聚合操作将多个文档中的值组合在一起,并可对分组数据执行各种操作,以返回单个结果。
在SQL中的 count(*)与group by组合相当于mongodb 中的聚合功能。

阅读全文

python中的一些errors

  1. builtins.ImportError: cannot import name ‘Empty’
    当运行python脚本程序后,python解析器会自动将当前脚本的路径加到syspath中,
    如果当前脚本的路径中含有与标准库同名的脚本queue.py,则报上面的错.所以不要有与标准库同名的脚本.

阅读全文

Python之psutil模块使用

psutil模块

阅读全文

Linux笔记

查看linux下所有的python3进程

1
ps aux | grep python3

阅读全文