![]() | 1 ShiehShieh OP 比如使用greenlet代替使用线程。 |
![]() | 2 mhycy 2014-12-29 00:14:24 +08:00 个人认为很多地方都可代替... 事实上也有很多项目是这么做的 但是是否存在不可代替的情况,也不能否认有这种情况存在的可能性 |
3 lee0100317 2014-12-29 09:45:15 +08:00 IO消耗型操作可以,反之cpu消耗型操作不可以 |
![]() | &nsp; 4 ShiehShieh OP @lee0100317 可是CPU消耗性本身线程也没有优势啊。相反,协程还能够省下context-switch的开销,减少死锁,竞争。不是更应该使用协程代替线程么? |
![]() | 5 toooddchen 2014-12-29 15:12:17 +08:00 ![]() py的多线程在cpu密集的应用中, 速度比单线程显著的慢. 现在看, 除了 1) 运行的任务线程需要被os感知到. 2) 任务中包含阻塞的调用. 这两种情况外, 线程没什么不能被协程替代的. |
![]() | 6 jamiesun 2014-12-29 20:26:12 +08:00 ![]() 用了这么多年python,使用多线程的次数几乎忽略不计,更多的是使用协程多进程。曾经还以为pyqt的qthread是可以利用多核的,后来查证也不是。在正经的环境中多线程没有什么优势。 |
![]() | 7 Zuckonit 2014-12-31 10:01:22 +08:00 协程+多进程 |