Python异步进程池示例,同时可接收返回值

2026-04-05 04:46:17

1、import multiprocessing as mp

from time import sleep

import os

def work(msg):

   sleep(2)

   print(msg)

   return 'worker return' + msg #为函数调用返回相关值

if __name__ == '__main__':

   pool = mp.Pool(processes = 4)

   result = []

   for i in range(10):

       msg = "hello %d"%i

       r = pool.apply_async(work,(msg,))#向进程池中加入要执行的事件

       result.append(r)

#关于多线程执行的时候返回值是有序的原因说明:因为多线程只是执行的时候顺序是无序的,但是加入时是用for 有序插入,返回的对象在for的每次循环中顺序插入新列表,所以也是有序的。

   for res in result:  

       print(res.get())

   pool.close() #关闭进程池事件加入通道,即不能再向进程池中加入事件

   pool.join()  #阻塞等等进程池处理事件结束后回收进程池

2、参数说明:

apply_async(func,args,kwds)

功能: 以异步的方式将要执行的事件放入进程池(异步:放入进程池后无顺序执行

)

参数:

func : 要执行的函数

args : 给函数按位置传参

kwds : 给函数按照键值传参

返回值 : 返回事件执行后的返回值对象,可以通过调用get() 函数获取事件函数return的内容

Pool()

功能:创建进程池

返回值类型:进程池对象

参数<1>的名称为(processes=整数型)用于设置进程池中进程的数量。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢