Python 协程示例多数都是用来做爬虫的,有没有其他案例可以更好的加深协程的理解和应用

2020-08-30 15:57:50 +08:00
 naldo0193

对协程比较困惑,各位大佬能给一点非爬虫的协程应用示例吗?

2418 次点击
所在节点    Python
13 条回复
linvaux
2020-08-30 22:36:57 +08:00
grequests
qdcanyun
2020-08-30 22:56:08 +08:00
可以看下这个 David Beazley 的 [Python Concurrency From the Ground Up]( <amp-youtube data-videoid="MCs5OvhV9S4" layout="responsive" width="480" height="270"></amp-youtube>),跟着写一遍就能理解了
anyuhanfei
2020-08-31 09:12:06 +08:00
python 的 websockets 就需要用到协程 https://websockets.readthedocs.io/en/stable/
butterfly1211
2020-08-31 09:56:27 +08:00
sanic, tornado 等 web 框架
naldo0193
2020-08-31 10:29:01 +08:00
@linvaux 非常感谢
naldo0193
2020-08-31 10:29:09 +08:00
@qdcanyun 非常感谢
naldo0193
2020-08-31 10:29:21 +08:00
@anyuhanfei 非常感谢
naldo0193
2020-08-31 10:29:31 +08:00
@butterfly1211 非常感谢
lolizeppelin
2020-08-31 10:44:52 +08:00
eventelt 源码读懂就行了,你比看任何东西都有效
zyx199199
2020-08-31 14:24:32 +08:00
可以看一下《流利的 Python 》这本书。书里对协程的用法举了好几个不同的例子。

简单的例子有不断计算平均数( running average ):定义一个函数,不断调用这个函数,传入新的数字作为参数,输出当前传入的参数与之前所有传入过的参数的平均数。

复杂的例子有使用协程做离散事件的模拟:模拟了 N 辆出租车一天中的各种事件,出车、空跑、载客、下班等等事件。
fasionchan
2020-08-31 15:48:00 +08:00
再造轮子,自制一个协程库,你就什么都明白了~

我写过一个 100 行左右的协程库,虽然是个玩具,对理解协程运行机制应该很有帮助,gist 地址如下:

https://gist.github.com/fasionchan/48d595b2e77b82f44ad92fc419543a41

例子来自我写的专栏《 Python 源码深度剖析》,里面有详细讲解: https://www.imooc.com/read/76
专栏是付费的,不过有几篇是免费的,还可以自己选一篇试读。可以选择试读《再造轮子:手把手教你设计协程库》这篇,里面完整介绍了协程的运行机制、协程库设计思想以及示例协程库代码解析。
naldo0193
2020-09-01 09:19:57 +08:00
@zyx199199 非常感谢
naldo0193
2020-09-01 09:20:45 +08:00
@fasionchan 非常感谢

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

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

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

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

© 2021 V2EX