python的multiprocessing包是标准库提供的多进程并行计算包,提供了和threading(多线程)相似的API函数,但是相比于threading,将任务分配到不同的CPU,避免了GIL的限制。下面我们对multiprocessing中的Pool和Process类做介绍。apply apply_asyncapply 要逐个执行任务,在python3中已经被弃用,而apply_async是apply的异步执行版本。并行计算一定要采用apply_async函数。map map_asyncmap_async 是 map的异步执行函数。相比于 apply_async, map_async 只能接受一个参数。Process采用Process必须注意的是,Process对象来创建进程,每一个进程占据一个CPU,所以要建立的进程必须 小于等于 CPU的个数。如果启动进程数过多,特别是当遇到CPU密集型任务,会降低并行的效率。进程间通信Process和Pool均支持Queues 和 Pipes 两种类型的通信。Queue 队列队列遵循先进先出的原则,可以在各个进程间使用。
暂无评论