框架选择的问题

来源:5-8 viewsets和router完成商品列表页

慕UI818949

2018-11-23

tornado是一个异步I/O框架,但是如果是计算密集型的任务,可以适用吗?比如现在有一个计算任务,计算需要1秒,但是同时有几千的http请求计算。这个时候Tornado有用吗?或者在Django/flask中使用多进程/多线程/协程来解决这个问题可以吗?

写回答

1回答

bobby

2018-11-24

对于python来说,同一个cpu上只能同时存在一个线程执行,这个对于基于python的所有框架都是一样的, 对于计算型的任务,django/flask和tornado都一样,处理能力没有区别, tornado的优势在于io操作的类型上, 可以同时处理大量的io操作而不会阻塞。所以结论就是如果是计算任务,多进程是必须要的, 多线程对于计算型的任务来说,不论是哪个语言都无法提高计算型任务的速度,这个时候有只有利用多核cpu的特性或者利用分布式计算的特性, python和java的不同之处在于,同一个进程内的多个线程只会在一个cpu上交替执行,java由于虚拟机特性可以将多个线程分配到多个cpu上运行,不过这个在python中启动过个进程就行了, 所以对于高cpu的操作来说,cpu本身的数量和cpu本身的性能是关键, 或者采用分布式计算利用多个机器同时计算会更好

0
2
bobby
回复
慕UI818949
加油!
2018-11-26
共2条回复

Python前后端分离开发Vue+Django REST framework实战

Django REST framework课程视频,RESTFul API前后端分离开发

2895 学习 · 2481 问题

查看课程