20.异步

#异步
'''
同步调用就是,你喊你朋友吃饭,你朋友正在忙
如果你一直在那等他,等你朋友忙完,你们一块去--同步调用

你喊你朋友吃饭,你朋友正在忙,
如果你自己做你自己的事情,你朋友忙完,找到你,一块去吃饭--异步调用
'''

from multiprocessing import Process,Pool
import os,time

def download():
    print("--进程池中的进程--pid=%d,ppid=%d"%(os.getpid(),os.getppid()))
    for i in range(3):
        print("--文件%d--"%i)

        time.sleep(1)

    return '下载完成!'

def alterUser(msg):
    print("__callback func--pid=%d"%os.getpid())
    print(msg)

def myerror():
    print('error')

if __name__ == "__main__":
    p = Pool(3)
    #异步 callback 回调download返回的"下载完成" 传递给callback对应的alterUser函数
    p.apply_async(func=download,callback=alterUser,error_callback=myerror)

    print("--start--")
    p.close()#关闭进程池,关闭后,p不再接受新的请求.
    p.join()
    # print(msg)
    print("--end--")

    # msg = download()
    # print(msg)

 

posted @ 2018-03-22 23:10  Bob__Zhang  阅读(142)  评论(0编辑  收藏  举报