Python 协程间同步问题

2019-10-09 12:59:21 +08:00
 dafsic

可能是写 go 写多了,python3 用 asyncio,就一直想着把多个协程的结果写到一个 queue 里,然后再一个协程从 queue 里读数据处理,这种模式。 python3 刚学没多久,见识少,有谁知道异步 python 代码,有没有官方的最佳实践,有相应的项目链接就行,谢了。

4068 次点击
所在节点    Python
5 条回复
Vegetable
2019-10-09 13:03:18 +08:00
python3 的协程间都是共享的,你直接用一个列表就行了,都单线程的,共享内存
StevanStark
2019-10-09 13:07:36 +08:00
协程直接可以共享结果,直接传递结果
wcsjtu
2019-10-09 14:18:29 +08:00
Python 协程同步, 也有 Lock、Queue、Condition 之类的, 没有的话,自己实现一个也很容易
BBCCBB
2019-10-09 14:23:19 +08:00
asyncio.Queue. 不过默认没有 go channel 的 close 功能,
sujin190
2019-10-11 17:54:59 +08:00
python 协程本来就是 future 调用链,单线程又是线程安全的,想实现 go 的 channel 逻辑很简单吧
用两个变量,一个数组一个 await 等待对象,处理协程运行的时候判断下数组为空则创建一个 future 对象赋值给 await,然后等待 await 对象激活,数据协程则先往数据组中存入数据,判断下 await 对象存在且未激活就激活 await 对象,这时候处理协程就返回开始运行,取出数组数据处理就完了

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

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

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

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

© 2021 V2EX