我掌握了 Python 的多线程编程, 也知道多进程 然而还有一个协程,也去学习了下, 也掌握一点协程的写法。 但是? Python 的协程的应用场景是? 一般的并发场景不都用线程,进程就解决了吗?我目前想不到什么场景适合用 Python 的协程比较好? 个人经验是用线程用的比较多,用在给不同主机批量发网络请求上。
1
dobelee 2019-04-12 19:33:32 +08:00 via Android
只看功能不看性能系列?
|
2
ipwx 2019-04-12 19:33:55 +08:00
1、协程比线程、进程处理 Network IO 要高效的多。也许可以 handle 高出一个数量级的客户端链接,不过我没有这方面的资料。
2、Python 的多线程基本是废的,因为 GIL 的存在,所以只能用协程。 |
4
Eds1995 2019-04-13 09:25:48 +08:00
去看[faust]( https://github.com/robinhood/faust)源码,个人觉得是 python 里面用 asyncio 最完美的
|
5
Eds1995 2019-04-13 09:26:45 +08:00
[faust]( https://github.com/robinhood/faust)
|
7
fghjghf 2019-04-13 15:06:21 +08:00
协程这玩意没啥用,线程的瓶颈就是他都瓶颈。他和线程都区别就是,线程都调度看系统,协程你可以自己控制。yield 就可以实现了
|
8
keepeye 2019-04-13 16:36:28 +08:00
最常见的应用就是 web 服务器吧,比如 tornado
我自己的话有一个场景,每个登录用户定时拉取外部信息的需求,如果每个用户开一个线程开销太大,所以就用协程还是很方便的 |
9
lowman 2019-04-16 11:39:16 +08:00
@mseasons python 的多线程基本是废的? 个人觉得有待商榷, 这里是否应该分场景讨论更合适, IO 密集型的任务使用 Python 的多线程去处理, 应该是可以实现多任务的, 一刀切应该并不合适
|
11
jesnridy 2019-04-18 14:54:09 +08:00
对于网络 IO 用协程处理不是美滋滋
|