首页 > 解决方案 > 如何为 ThreadPoolExecutor 和 ProcessPoolExecutor 设置最有效的参数?

问题描述

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

这是使用 python 的内置函数concurrent.futures

标签: pythonmultithreadingconcurrencymultiprocessing

解决方案


特德莱尼的评论!

你必须测量它。


我通常使用类似于 tdelaney 概述的方法来获得对该程序的总体感觉。您的大部分程序是解析 JSON 还是 HTML?比它受 CPU 限制。是在发出 db/http/network 请求吗?IO 绑定

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


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

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

推荐阅读