我正在编写一个应该进行大量检查的简单脚本。每个检查都是独立的,所以我决定把它放到多个线程中。但是我不知道将设置脚本的机器有多快。我已经找到了相当不错的工具来检查目标机器的基本参数但是我想知道是否有任何方法来确定什么是最大合理的线程数量(我的意思是新线程开始减慢进程而不是加速它的时刻)?
答案 0 :(得分:3)
您可以找到目标计算机拥有的核心数
import multiprocessing
multiprocessing.cpu_count()
如果您选择multiprocessing
来管理您的任务,那么您可以设置Pool
大小或工作线程数取决于系统负载和.cpu_count()
。
至于你选择什么样的好号码,你必须自己决定: - )
答案 1 :(得分:2)
在python中出于速度目的的线程并不是一个非常好的主意,特别是对于cpu绑定操作。 GIL可以从多个CPU中看到任何潜在的性能提升(其中#是从线程中提速的理论极限 - 尽管在实践中是YMMV)。
对于真正独立的“检查”,你最好不要考虑多处理。
答案 2 :(得分:0)
你可能在最后一句话中得到答案。您可以测量执行时间,因为它随线程添加而变化。并自适应地添加或删除(并重新排队已删除的线程的作业)线程以保留您喜欢的执行时间。如果您想获得复杂的结账,请control theory。