在可以用协程的情况下是不是多线程已经完全没有意义了

9 天前
 shinonome

协程更加的灵活,同时相比于多线程,开销也更小了,

感觉 python 在有锁的情况下感觉除非不支持协程,不然没有必要多线程了

6878 次点击
所在节点    Python
66 条回复
amlee
9 天前
cpu 密集的应用不管了?
Ericcccccccc
9 天前
不是一回事都...

要解决的问题也不一样
BeautifulSoap
9 天前
不是,lz 是真的没理解什么是协程什么是线程啊,,,,,
shinonome
9 天前
@amlee #1 CPU 密集的 python 的多线程和协程感觉区别也不大啊,Python 不是也不能同时运行多个 CPU 吗
shinonome
9 天前
@BeautifulSoap #3 现在确实感觉这两个在 python 下太接近了
mixuxin
9 天前
#3 协程和线程的区别可以去参考 go 方面的资料,比较多
ysc3839
9 天前
无栈协程是有多线程模式的,比如 C++的 asio 能在多个线程上跑 loop 。
BBCCBB
9 天前
python 有 GIL 的时候只有 1 个线程跑协程, 没 GIL 多个线程同时跑多个 task 队列..
neilp
9 天前
协程需要主动放弃.
而有的任务中, 没有合适的时机主动放弃. 放弃太多,性能跟不上. 放弃太少,有的协程就饿死了.
wizardyhnr
9 天前
3.13 已经有 noGIL 的实验性 build 了,楼主了解一下?
noqwerty
9 天前
@shinonome 官方的 multiprocess 和第三方的 mpire 了解一下?
fkdtz
9 天前
我认为是的,这么说吧如果是一个全新项目不需要考虑兼容已有的代码和库,肯定是首选协程。
至少没遇到过能用协程而不用,反而选择用多线程的情况。
shinonome
9 天前
@noqwerty #11 是线程啦,不是多进程
shinonome
9 天前
@wizardyhnr #10 这个太新了,我估计我最近几年都不会去使用这个版本的
shinonome
9 天前
@neilp #9 确实,手动释放这个也挺麻烦
weyou
9 天前
楼主的话没错,但协程需要从上到下都支持才能用,直到现在 pypi 库里也没多少库是支持协程的,所以很多情况下只要你需要使用第三方库,你就不得不用线程
dearmymy
9 天前
也就 io 多地方适合,或者 ui 上逻辑用写成写也不错,逻辑不会回调满天飞。 其他情况协议没有扔出去得时间。
我是觉得能真正理解协程整个实现,绝对是对编成理解上个台阶。涉及对栈,寄存器之类的理解。强烈建议 op 花时间好好研究下协程,受益匪浅。
第一次看是一个 360 大神,一个 h 头文件写的协程库,简直惊为天人。
jianchang512
9 天前
多线程显然比协程更简单啊,也更少出 bug
yidinghe
9 天前
协程是对线程的抽象和封装,是对线程更高效的使用方式。所以有协程可用,肯定是比直接用线程好的。
Inn0Vat10n
9 天前
99%的正常业务场景用不到协程

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

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

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

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

© 2021 V2EX