107-python-进程池中的返回值

# apply_async:
import time
from multiprocessing import Pool

def fn(i):
    time.sleep(0.5)
    return i*i

if __name__ == '__main__':
    p = Pool(5)
    l = []
    for i in range(10):
        ret = p.apply_async(fn,args=(i,))
        l.append(ret)
        # print(ret.get())    # 阻塞 get 方法会等待 fn 执行完毕拿到返回值才会往下走,这里从异步变成了同步
        # print('asd')
    for i in l: # 解决方法.
        i.get()
        print('asd')

# map:
import time
from multiprocessing import Pool

def fn(i):
    time.sleep(0.5)
    return i*i

if __name__ == '__main__':
    p = Pool(5)
    ret = p.map(fn,range(10))
    print(ret)  # 将计算结果一次性打印出来
posted @ 2018-11-20 12:33  _Q  阅读(885)  评论(0编辑  收藏  举报