python - 如何为 ThreadPoolExecutor 和 ProcessPoolExecutor 设置最有效的参数?
问题描述
如果我理解正确,ProcessPool
请在 CPU 受限时使用它。所以如果我是四核,那是否意味着最有效的 max_workers 是 4?我怎么知道哪个是最有效的ThreadPool
,因为如果我理解正确,应该在 I/O 绑定时使用它?
这是使用 python 的内置函数concurrent.futures
。
解决方案
特德莱尼的评论!
你必须测量它。
我通常使用类似于 tdelaney 概述的方法来获得对该程序的总体感觉。您的大部分程序是解析 JSON 还是 HTML?比它受 CPU 限制。是在发出 db/http/network 请求吗?IO 绑定
然后我参数化所有工作/进程/线程池以允许从启动配置它们。然后使用来自 tdelaney 的分析执行测试,以确定默认配置值应该是什么。然后应用和测量工作负载,处理延迟、吞吐量、错误等。然后调整配置选项,并应用相同的工作负载。
有很多很棒的性能测试工具:
推荐阅读
- vue.js - 如何将过滤器计算属性应用于 Vuex 的 mapState 中的计算属性?
- javascript - 如何在 java 脚本循环中使用 push?
- macos - unstow 目录导致警告
- javascript - 使用 BeautifulSoup 进行网页抓取不起作用
- javascript - 未能在“IDBObjectStore”上执行“放置”:事务已完成
- javascript - 简单的 Shuffle.js 搜索不适用于 Bootstrap 4 卡
- embedded - CPU如何读取内存映射的IO?
- c# - C# JWT 令牌在更新后仍然存在声明?
- macos - 在使用 SwiftUI 的 MacOS 应用程序中,如何修改嵌套在列表中的选定 NavigationLink 的默认蓝色背景?
- javascript - 访问 localstorage 对象值在将其分配给 reactjs 中的另一个变量时给出未定义