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

13 天前
 shinonome

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

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

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

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

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

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

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

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

© 2021 V2EX