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

2024-06-20 20:53:28 +08:00
 shinonome

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

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

11143 次点击
所在节点    Python
70 条回复
amlee
2024-06-20 20:54:55 +08:00
cpu 密集的应用不管了?
Ericcccccccc
2024-06-20 21:04:06 +08:00
不是一回事都...

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

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

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

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

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

© 2021 V2EX