可以通过指定目标函数和每次调用目标函数的参数可迭代对象来向进程池发出多个调用。可以通过以下函数实现这一点:map()、map_async()、imap()、imap_async()、starmap() 和 starmap_async()。
我们可以使用诸如 apply()
的函数向进程池发出临时任务,也可以使用诸如 map()
的函数将相同的函数应用于一个可迭代的项目集合。发出的任务的结果可以同步获取,或者可以稍后使用诸如 apply_async()
和 map_async()
的异步版本的函数获取任务的结果。
在使用进程池时,我们可能需要初始化一个变量、数据或资源,以便每个工作进程在执行其任务时都可以使用该资源。例如,可能需要为每个进程分配一个日志记录的句柄或连接到远程服务器的连接,并在执行任务时保持打开和重复使用。
我们需要一种方法,在执行任何任务之前,调用一个函数来初始化进程池中每个工作进程。
每个Python程序都是一个进程,并且有一个称为主线程的线程用于执行程序指令。每个进程实际上是Python解释器的一个实例,用于执行Python指令(Python字节码),这比您在Python程序中键入的代码略低级。
需要向进程池分发任务
pool 提供了一个用于执行临时任务的可重用进程池。
The pool provides 8 ways to issue tasks to workers in the process pool.
They are: