python 主线程 等待 子线程 知乎_知乎为什么使用Tornado?使用Python中的多线程特性了吗...

qq_笑_17

自从使用tornado以后就不再使用django了, tornado也从1.x到了现在3.xTornado之所以与众不同, 是因为它是众多WSGI框架中的一个特例. 它的异步方式也给了社区很多启发, 影响力很大.单就非阻塞和多线程, 起到的都是"多任务"那种功能. 不同的是, 多线程把处理器时间按照任务平分, 非阻塞是按照事件来驱动多任务, 不会在一个任务没有执行完的时候打断(没有保存变量, 任务切换这种事情, 当然也不需要加锁)至于哪个对web开发更重要? 写出来的程序功能是一样的. 如果是异步写, 代码会多一点, 因为有很多callback, 但是你完全无需处理多线程程序的共享资源问题, 无需数据库连接池.你需要小心不要写出CPU占用太高的代码, 因为CPU不是按照时间平均分配给大家的, 如果你的程序处理一件事情需要两秒钟, 那么两个线程的程序可能会同时跑, 总共5秒同时结束(1秒钟用在任务切换).如果是异步环境, 那么就是先执行一个程序2秒, 然后再执行另外一个程序2秒, 总共4.5秒(无需保存环境, 假设任务切换0.5秒)对于那种CPU消耗极小的等待任务, 比如同步的curl操作(服务器在等待另外一个服务器), 这等待的1秒钟, 使用异步的话tornado已经可以处理几千个其他的http requests, 奇妙的是tornado这个时候还是工作在单线程模式, CPU几乎完全没有浪费.实战中, 其他框架需要在多进程prefork模式下开到60-100个进程的吞吐能力, tornado可能开1到3个进程, 处理能力是类似的. 注意在多进程模式下, cpu需要不断切换60个进程的压力是不小的.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值