如何为ThreadPoolExecutor和ProcessPoolExecutor设置最有效的参数?

时间:2018-05-08 17:28:41

标签: python multithreading concurrency multiprocessing

如果我理解正确,对于ProcessPool,你在CPU受限时使用它。所以,如果我是四核,这是否意味着最有效的max_workers是4?我如何知道ThreadPool哪个最有效,因为如果我理解正确,那么当你受I / O限制时应该使用它?

这是使用python的concurrent.futures

中的内置函数

1 个答案:

答案 0 :(得分:0)

tdelaney的评论!

你必须测量它。

我通常使用像tdelaney概述的方法来获得对程序的一般感觉。解析JSON或HTML的程序的大部分是什么?而不是CPU限制。是在进行db / http /网络请求吗? IO绑定

然后我参数化所有工作者/进程/线程池,以允许从启动时配置它们。然后使用来自tdelaney的分析来执行测试,以确定默认配置值应该是什么。然后是workload is applied and measured,处理延迟,吞吐量,错误等。然后调整配置选项,并应用相同的工作负载。

有很多很棒的性能测试工具:

  • ab
  • vegeta
  • siege
  • 消息队列/代理经常公开http接口,因此可以使用上述工具之一加载待办事项,或以一致的吞吐率应用