# 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个任务的返回值