Cha*_*Ken 7 python multithreading threadpool python-3.x
ThreadPoolExecutorfromconcurrent.futures和ThreadPoolfrom有区别吗multiprocessing.dummy?本文建议将ThreadPool“线程”(任务)查询到CPU的不同“线程”上。是否concurrent.futures做同样的事情或者“线程”(任务)查询CPU的单个“线程”?
这multiprocessing.dummy.ThreadPool是 API 的副本multiprocessing.Pool,它使用线程而不是进程,这会导致一些奇怪的情况,因为线程和进程非常不同,包括返回AsyncResult只有它理解的类型。
它concurrent.futures.ThreadPoolExecutor是一个子类concurrent.futures.Executor,它是一个更新的更简单的 API,在开发时考虑了进程和线程,因此返回一个通用的concurrent.futures.Future.
从非常广泛和长远的角度来看,两者的作用相同,但concurrent.futures.ThreadPoolExecutor做得更好。
参考:
\n\n\n\n\n
multiprocessing.dummy复制多处理的 API,但只不过是模块的包装器threading。特别是,
\nPool提供的函数multiprocessing.dummy返回 的实例ThreadPool,它是 的子类,Pool支持所有相同的方法调用,但使用工作线程池而不是工作进程。
从multiprocessing.dummy.ThreadPool文档中
\n\nA
\nThreadPool与 共享相同的接口Pool,它是围绕进程池设计的,并且早于该concurrent.futures模块的引入。因此,它继承了一些对于线程支持的池来说不有意义的操作,并且它有自己的类型来表示异步作业的状态,AsyncResult这是任何其他库都无法理解的。用户通常应该更喜欢使用
\nconcurrent.futures.ThreadPoolExecutor,它具有更简单的接口,从一开始就围绕线程设计,并且返回concurrent.futures.Future与许多其他库兼容的实例,包括asyncio.