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

2015-07-17 09:36:39 +08:00
 latteczy
线程肯定不是开越多越好吧?
怎么确定你的项目适合开几个线程合适呢?
线程开的越多,它消耗的代价是什么,内存?CPU?
5261 次点击
所在节点    Python
10 条回复
freefcw
2015-07-17 09:47:06 +08:00
你确定python的线程?

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

对于cpython来说,肯定是只能用一个核呀,n个核的话,可以跑多进程
leavic
2015-07-17 17:05:47 +08:00
我写单片机代码过来的,多核是啥玩意都不知道,python多进程在windows上兼容性不是太好,反正多线程我觉得够用了。如果不是特别费时的任务,一个任务一个线程足够了,多了还得考虑资源互斥的问题,很烦。
freefcw
2015-07-17 17:24:39 +08:00
@townboy python有GIL,所以线程只能是一个呵呵的概念,至于说利用多核,那就更没谱了
ligyxy
2015-07-18 09:55:17 +08:00
线程数恐怕需要反复尝试了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/206300

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX