进程池的返回值

# import time
# from multiprocessing import Pool
#
# def func(i):
#     time.sleep(1)
#     return i * i
#
#
# if __name__ == '__main__':
#     pool = Pool(4)
#
#     for i in range(10):
#         ret = pool.apply(func, args=(i, ))  # 同步任务调用的任务的返回值,一个任务执行完后才能执行下一个任务,直接就是func的返回值
#         print(ret)    # 直接打印任务返回值的结果
#

# import time
# from multiprocessing import Pool
#
# def func(i):
#     time.sleep(1)
#     return i * i
#
#
# if __name__ == '__main__':
#     pool = Pool(4)
#
#     for i in range(10):
#         ret = pool.apply_async(func, args=(i, ))  # 异步提交任务调用的任务的返回值,返回值得到的是一个任务的返回结果对象
#         #print(ret)  # 不调用get方法,直接打印的就是得到任务的返回结果对象
#         print(ret.get())    # 调用返回结果的对象的get方法会同步阻塞等待每个任务执行结束后返回的结果
#

# import time
# from multiprocessing import Pool
#
# def func(i):
#     time.sleep(1)
#     return i * i
#
#
# if __name__ == '__main__':
#     pool = Pool(4)
#     ret_l = []
#     for i in range(10):
#         ret = pool.apply_async(func, args=(i, ))  # 异步提交任务调用的任务的返回值,返回值得到的是一个任务的返回结果对象
#         ret_l.append(ret)
#
#     for ret in ret_l:
#         print(ret.get())    # 阻塞得到进程池中每个任务的返回值,先执行完的任务,则先得到执行完任务的返回值并打印出来


import time
from multiprocessing import Pool

def func(i):
    time.sleep(1)
    return i * i

if __name__ == '__main__':
    pool = Pool(4)
    ret = pool.map(func, range(10)) # 异步执行10个任务,阻塞等待每个任务执行完毕将返回值返回放到了ret列表中
    print(ret)  # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]  # 一次性打印出上面阻塞等待的10个任务的返回值

猜你喜欢

转载自www.cnblogs.com/whylinux/p/9833152.html
今日推荐