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 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
haython 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
协程 语言本身代替系统做了线程的工作 所以和语言的效率有关
|