V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
josephok
V2EX  ›  Python

测试了一下 requests 的效率

  •  
  •   josephok · 2015-02-07 19:16:20 +08:00 · 3025 次点击
    这是一个创建于 3572 天前的主题,其中的信息可能已经有所发展或是发生改变。
    9 条回复    2015-02-10 10:27:38 +08:00
    invite
        1
    invite  
       2015-02-07 19:48:12 +08:00
    单线程的时候,没有对比的?

    比如用wget单个单个的下,看看耗时多少。

    而且,测一次很明显不能排除耗时是否由网络引起或者对方服务器引起。
    leyle
        2
    leyle  
       2015-02-07 19:49:15 +08:00
    看了你的文章了,你的结论是什么?
    leyle
        3
    leyle  
       2015-02-07 19:51:13 +08:00
    @leyle 可以得出的一个结论是,在 python 编写的程序中,I/O bound 型应用,使用多线程能大大提高效率。
    lincanbin
        4
    lincanbin  
       2015-02-07 19:54:09 +08:00
    干扰变量没有控制,测试准确性存疑。
    我觉得你可以通过有线网络访问内网一台Web服务器进行抓取,这样的结果所受干扰变量较少。
    a2z
        5
    a2z  
       2015-02-07 20:17:58 +08:00
    我自己的测试是multiprocessing最快,gevent其次,threading有时候还不如单线程快……
    VYSE
        6
    VYSE  
       2015-02-08 10:05:38 +08:00 via Android
    gevent改成grequest再测
    ffffwh
        7
    ffffwh  
       2015-02-08 15:19:03 +08:00
    这gevent靠谱么。。有试过手写回调的方案么。

    可能单线程异步会稍微慢一点,弄2~3个应该差不多(线程数=c)。但I/O Bound用同步多线程(线程数=n)绝对是不好的。
    josephok
        8
    josephok  
    OP
       2015-02-10 10:03:46 +08:00
    @leyle 嗯 看了你的文章: http://www.leyle.com/archives/threading_and_queue.html 改天研究一下你的代码。
    leyle
        9
    leyle  
       2015-02-10 10:27:38 +08:00
    @josephok 哈哈,互相交流哈。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1194 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:29 · PVG 02:29 · LAX 10:29 · JFK 13:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.