我的MOBO上有两个Xeon处理器(每个处理器有8个核心,总共32个线程),我使用multiprocessing.Pool(处理器= 30)运行了一个简单的代码。当我使用htop进行监控时,我发现只使用了12个线程。有谁知道为什么会这样?
答案 0 :(得分:1)
Pool()
可以为用户调用提供指定数量的进程,如果池未满,则创建新进程以执行请求;但是,如果池中的进程数已达到指定的最大值,则请求将等待池中的进程创建新进程。
对于支持多线程的模型,建议的线程数至少为1:1。这允许一些线程做IO
如果您的流程没有使用完整的核心,它就不会占用另一个核心。