![]() | 1 felixzhu 2014-12-09 11:21:39 +08:00 切换成本? |
![]() | 2 phoneli 2014-12-09 11:42:17 +08:00 网络io处理的问题? |
![]() | 3 imn1 2014-12-09 11:46:40 +08:00 你那个不是乘的关系吧? 12秒 1k任务挺难想象的……爬什么网? 如果只是本地,实际上只是磁盘IO…… |
![]() | 4 est &nbp; 2014-12-09 11:48:06 +08:00 目测代码姿势奇特。 |
![]() | 5 clino 2014-12-09 11:48:08 +08:00 因为协程只能用一个cpu吧 所以适合与高IO低CPU的任务 |
![]() | 6 wuyadong 2014-12-09 11:48:59 +08:00 requests是阻塞的吧。这样用没有用到协程的效果吧。 |
![]() | 7 clino 2014-12-09 11:50:19 +08:00 是不是因为爬到本地以后要做不少耗CPU的处理导致有这样的结果? 如果有比较耗CPU的动作,看能不能在协程中调用子进程处理,这样就不会因为高CPU阻塞本进程 |
![]() | 8 Feiox OP |
9 richardtsai 2014-12-09 12:25:27 +08:00 |
![]() | 10 dant 2014-12-09 12:29:59 +08:00 via iPhone 20 个线程应该完全没有压力啊... 不过 CPython 好像有 GIL? |
![]() | 11 tabris17 2014-12-09 12:31:41 +08:00 你协程有没有充分利用多CPU资源,协程使用的IO库是不是阻塞的 |
![]() | 12 sujin190 2014-12-09 12:38:44 +08:00 协程不是这么用的 |
![]() | 13 displayabc 2014-12-09 12:47:03 +08:00 为什么协程会比线程快? |
![]() | 14 cloverstd 2014-12-09 12:48:00 +08:00 |
![]() | 15 zhouquanbest 2014-12-09 14:04:19 +08:00 为了取得平衡 我一般是多worker(process)+gevent 数量根据业务调配 这样比较方便 (论人手一个Python爬虫轮子的重要性) |
![]() | 16 clino 2014-12-09 17:00:42 +08:00 楼主用 grequests 试过了吗? |
![]() | 17 njutree 2014-12-09 17:54:46 +08:00 首先不同语言的协程和线程还是有区别的,其次楼主爬的什么网页io高么,最后使用协程的时候没有让他们有阻塞么? |
18 zenliver 2014-12-10 10:15:31 +08:00 request 阻塞的 无误 |
![]() | 19 wuyadong 2014-12-10 10:38:07 +08:00 @Feiox request是阻塞的,异步的关键是非阻塞的IO。我不是特别清楚gevent是否能将request转成非阻塞IO,但是我觉得有可能这个阻塞IO可能是关键。:) |
21 datou552211 2014-12-30 10:35:14 +08:00 via iPhone 协程 语言本身代替系统做了线程的工作 所以和语言的效率有关 |