- 同步就是你喊你朋友吃饭,你朋友忙,你就一直在那里等,等你朋友忙完了,你们一起去
- 异步就是你喊你朋友吃饭,你朋友说知道了,待会忙完去找你,你就去做别的了
代码示例:
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的等待时间,提高资源的利用率
网友评论