关于Python线程池大小应该控制在什么范围内最适合,python线程,在Java中,线程池大小
关于Python线程池大小应该控制在什么范围内最适合,python线程,在Java中,线程池大小
在Java中,线程池大小通常被设置成CPU核心数+1,《Java Concurrency In Practise》8.2节中有这么一段话:
对于计算密集型的任务,在拥有N个处理器的系统上,当线程池的大小为N+1时,通常能实现最优的效率。(即使当计算密集型的线程偶尔由于缺失故障或者其他原因而暂停时,这个额外的线程也能确保CPU的时钟周期不会被浪费。)
btw: 不太熟悉Java,网上引用,没经过实践。
并发编程网上也有一篇相关的文章,要点如下:
如果是CPU密集型应用,则线程池大小设置为N+1
如果是IO密集型应用,则线程池大小设置为2N+1
最佳线程数目 = ((线程等待时间+线程CPU时间)/线程CPU时间 )* CPU数目
线程等待时间所占比例越高,需要越多线程。线程CPU时间所占比例越高,需要越少线程。
疑问:对于n核和2n线程的处理器有什么需要注意的地方?
问题
以上都是引用自Java,Python方面的资料相对较少,所以想讨论一下。
由于CPython中GIL存在,Python同一时刻只能运行一个线程,所以这里不讨论计算型任务,只看IO型任务,Python线程池大小应该怎么设置才算合理?(IO最好的办法是采用异步,主要想讨论下不支持异步的情形)
如何估算srv需要设置的进程数?
原则
每个进程占用内存之和需要小于总内存
中心思想就是,你响应的瓶颈是在 io 还是在 CPU。
编橙之家文章,
相关内容
- Python计算10.0/3结果为3.33333333335正常吗,,环境python2.6.
- python语言利用subprocess库调用mplayer时发生错误,pythons
- python如何实现将上传数据中key值做为文件名保存的方法
- Python Pycharm os.system方式调用程序的问题,pycharmos.syste
- Python正则匹配r'\s+'与r'(\s+)'两种方法有何不同,python有
- 删除保留内容外的数据用python方式如何实现,内容pyt
- 谁有数据量大些的敏感词数据表分享一份,十分感谢!,
- Python边下载边播怎么实现?可以不用搭建流媒服务器吗
- :和->在Python程序中的分别代表什么及作用是什么
- Python语句pipe管道用法大神请指导,pythonpipe,Python语法问
评论关闭