Python47_异步与回调函数

  • 同步就是你喊你朋友吃饭,你朋友忙,你就一直在那里等,等你朋友忙完了,你们一起去
  • 异步就是你喊你朋友吃饭,你朋友说知道了,待会忙完去找你,你就去做别的了

代码示例:

from multiprocessing import Pool
import time,os

def test():
    print("---进程池中的进程---pid = {}, ppid = {}".format(os.getpid(), os.getppid()))
    for i in range(3):
        print("---{}---".format(i))
        time.sleep(1)
    return "hahaha" #当子线程执行到这里的时候,可以认为子进程的生命结束了,
    # 当子进程生命结束的时候,父进程就会去执行回调函数
    #并将进程的返回值作为回调函数的参数

def test2(args):
    print("---callback func--pid = {}".format(os.getpid()))
    print("---callback func--args = {}".format(args))

if __name__ == '__main__':
    pool = Pool(3)
    pool.apply_async(func=test, callback=test2) #callback:回调

    time.sleep(5)   #本来父进程有事情正在干(睡觉),但是发现子进程执行完后,
    #父进程转而去执行回调函数,然后回来继续做自己的事情

    print("---主进程-pid = {}".format(os.getpid()))

'''运行结果:
---进程池中的进程---pid = 8724, ppid = 14720
---0---
---1---
---2---
---callback func--pid = 14720
---callback func--args = hahaha
---主进程-pid = 14720
'''

异步的好处:
减少cpu的等待时间,提高资源的利用率

你可能感兴趣的:(Python47_异步与回调函数)