2024-04-27 03:47:39 发布
网友
由于这个伟大的问题,在这里how-to-use-threading-in-python,让我怀疑,线程池的数量是否对速度或内存使用有重要影响?
例如,线程池的数量应该乘以我的CPU核数吗? (我有两个CPU核心,所以我应该做4,8,12,。。线程池?)。在
提前谢谢你。在
在CPython中,ThreadPool(通常是threading)主要用于I/O绑定任务。 当您的测试停止增加时,池的吞吐量会一直增加。在
ThreadPool
threading
对于Python中CPU受限的任务(但不是numpy或其他在工作时释放GIL的扩展),最好使用multiprocessing.Pool。在这种情况下,我倾向于使用尽可能多的进程作为CPU的核心。这是使用processes=None创建Pool时的默认设置。如果您使用的进程多于核心,则池中的进程将为核心而斗争。在
numpy
multiprocessing.Pool
processes=None
Pool
在CPython中,
ThreadPool
(通常是threading
)主要用于I/O绑定任务。 当您的测试停止增加时,池的吞吐量会一直增加。在对于Python中CPU受限的任务(但不是
numpy
或其他在工作时释放GIL的扩展),最好使用multiprocessing.Pool
。在这种情况下,我倾向于使用尽可能多的进程作为CPU的核心。这是使用processes=None
创建Pool
时的默认设置。如果您使用的进程多于核心,则池中的进程将为核心而斗争。在相关问题 更多 >
编程相关推荐