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
unicomcat
V2EX  ›  Python

win 怎么看多线程是否执行效率高于单线程

  •  
  •   unicomcat · 2017-09-18 23:04:33 +08:00 · 2475 次点击
    这是一个创建于 2411 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我的程序属于 IO 密集型,理论上使用多线程的话效率应该高。

    有没有工具可以很直观的看出来跑同样的数据量,多线程比单线程要快多少。

    除了单线程、多线程分开跑一边分别打印时间这种方式。

    7 条回复    2017-09-19 09:14:47 +08:00
    hjc4869
        1
    hjc4869  
       2017-09-18 23:21:10 +08:00 via Android
    是谁教你的 IO 密集型用多线程效率更高?
    cheetah
        2
    cheetah  
       2017-09-18 23:22:20 +08:00
    如果是 web 应用的话可以用各种压测工具,如 ab,不是的话我也不知道了
    wellsc
        3
    wellsc  
       2017-09-18 23:44:39 +08:00
    IO 密集型的话单线程的 callback 和协程并发都比多线程效率高,因为单线程不需要过多的关心线程的栈空间、调度成本、CPU 使用率等问题。。
    changwei
        4
    changwei  
       2017-09-19 01:21:00 +08:00 via Android
    打开 windows 自带的资源管理器或者任务管理器,然后观察 io,哪个硬盘或者网络 io 占的多就是哪个快。
    leavic
        5
    leavic  
       2017-09-19 07:38:15 +08:00
    @hjc4869 如果他只用 python 自带的库,multi processing 确实是会效率更高的,自带的库在 block 时会自动释放 GIL。当然,也只是比单纯的单线程高,更高的肯定是 coroutine。
    nullcc
        6
    nullcc  
       2017-09-19 08:49:16 +08:00
    建议 LZ 复习一下操作系统中进程和线程知识
    quadpixels
        7
    quadpixels  
       2017-09-19 09:14:47 +08:00
    确实是依赖于负载类型的
    就拿 RSTM 这个事务内存库中自带的性能测试来看,红黑树的并行度比哈希表要高一些:
    如果开 4 个线程,红黑树大概有单线程 4 倍左右的性能
    但是哈希表开 4 个线程,只有单线程 2 倍左右的性能
    可能是访存与计算操作密集度之比导致的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5474 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 03:37 · PVG 11:37 · LAX 20:37 · JFK 23:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.