python 进程池pool简单使用

tech2026-04-16  2

python 进程池pool简单使用

平常会使用到多进程,可以是用进程池pool来进行自动控制进程

需要注意的是,在windows想要使用进程模块,就必须把有关代码写在if__name__=='main'语句下面才能正常使用,Unix和Linux下则不需要

Pool类可以提供指定数量的进程供用户调用,当有新的请求提交到Pool中时,如果池还没有满,就会创建一个新的进程来执行请求。如果池满,请求就会告知先等待,直到池中有进程结束,才会创建新的进程来执行这些请求。 

下面介绍一下multiprocessing 模块下的Pool类下的几个方法:

1、apply()

    函数原型:apply(func[, args=()[, kwds={}]])

    该函数用于传递不定参数,同python中的apply函数一致,主进程会被阻塞直到函数执行结束(不建议使用,并且3.x以后不在出现)。

2、apply_async

    函数原型:apply_async(func[, args=()[, kwds={}[, callback=None]]])

    与apply用法一致,但它是非阻塞的且支持结果返回后进行回调。

3、map()

     函数原型:map(func, iterable[, chunksize=None])

    Pool类中的map方法,与内置的map函数用法行为基本一致,它会使进程阻塞直到结果返回。 

    注意:虽然第二个参数是一个迭代器,但在实际使用中,必须在整个队列都就绪后,程序才会运行子进程。

4、map_async()

    函数原型:map_async(func, iterable[, chunksize[, callback]])

    与map用法一致,但是它是非阻塞的。其有关事项见apply_async。

5、close()

    关闭进程池(pool),使其不在接受新的任务。

6、terminal()

    结束工作进程,不在处理未处理的任务。

7、join()

    主进程阻塞等待子进程的退出, join方法要在close或terminate之后使用。

 

最新回复(0)