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

Python 如何确定要开几个线程?

  •  
  •   latteczy · 2015-07-17 09:36:39 +08:00 · 5370 次点击
    这是一个创建于 3446 天前的主题,其中的信息可能已经有所发展或是发生改变。
    线程肯定不是开越多越好吧?
    怎么确定你的项目适合开几个线程合适呢?
    线程开的越多,它消耗的代价是什么,内存?CPU?
    10 条回复    2015-07-18 09:55:17 +08:00
    freefcw
        1
    freefcw  
       2015-07-17 09:47:06 +08:00
    你确定python的线程?

    看瓶颈什么,一般的话,为了减少上下文切换浪费的资源,和cpu数量一致,但实际上瓶颈往往在磁盘和网络,数据库上,也就不是这么简单被约束了。
    latteczy
        2
    latteczy  
    OP
       2015-07-17 09:55:50 +08:00
    @freefcw 为什么要跟cpu数量一致呢?大于cpu数量会怎样?有人说Python的多线程只能利用单核,不能利用多核优势,有人又说他的cpu能跑满,被整迷糊了。。
    还有,开多线程对内存有什么消耗么?
    geeglo
        3
    geeglo  
       2015-07-17 10:00:23 +08:00
    @latteczy 一个脚本跑满一个CPU,N核就跑N个。
    大于cpu数量会怎样?freefcw 已经讲了:“一般的话,为了减少上下文切换浪费的资源,和cpu数量一致”
    townboy
        4
    townboy  
       2015-07-17 10:05:00 +08:00
    @freefcw python的线程并不能很好的利用多核。
    townboy
        5
    townboy  
       2015-07-17 10:06:50 +08:00
    @geeglo 跑n个线程和跑n个脚本(理解为进程) 不是一回事情吧
    dingyaguang117
        6
    dingyaguang117  
       2015-07-17 10:12:45 +08:00
    CPU密集型才开跟CPU数量相同吧, IO一般要自己实测吧
    socrates
        7
    socrates  
       2015-07-17 16:43:13 +08:00
    python的多线程主要还是放在io密集型情况下使用把,比如要等待数据库访问这种场景的

    对于cpython来说,肯定是只能用一个核呀,n个核的话,可以跑多进程
    leavic
        8
    leavic  
       2015-07-17 17:05:47 +08:00
    我写单片机代码过来的,多核是啥玩意都不知道,python多进程在windows上兼容性不是太好,反正多线程我觉得够用了。如果不是特别费时的任务,一个任务一个线程足够了,多了还得考虑资源互斥的问题,很烦。
    freefcw
        9
    freefcw  
       2015-07-17 17:24:39 +08:00
    @townboy python有GIL,所以线程只能是一个呵呵的概念,至于说利用多核,那就更没谱了
    ligyxy
        10
    ligyxy  
       2015-07-18 09:55:17 +08:00
    线程数恐怕需要反复尝试了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3369 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 00:51 · PVG 08:51 · LAX 16:51 · JFK 19:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.