定义:
把一个函数a作为参数传给另一个函数b,则称该函数a为回调函数
回调分为同步回调和异步回调
同步回调:是等待b执行完成后再调用a
异步回调:是不等待b执行完,直接调用a
案例:
1、同步
import random
def product_nun(fn):
l = []
for i in range(10):
x = random.randint(1,100)
l.append(x)
res_callback(l)
def res_callback(result):
print '产生的随机列表数为',result
# 进一步处理
jishu_ = []
for j in result:
if j % 2 == 0:
jishu_.append(j)
print "偶数列表",jishu_
product_nun(res_callback)
2、异步
结合进程池的异步调用
from multiprocessing import Process,Pool
import os
import time
#子进程任务
def download():
print('__进程池中的进程——pid=%d,ppid=%d'%(os.getpid(),os.getppid()))
for i in range(3):
print('--文件--%d'%i)
return '下载完成!'
#主进程调用回调函数
def alterUser(msg):
print("----callback func --pid=%d"%os.getpid())
print(msg)
if __name__ == "__main__":
p = Pool(3)
p.apply_async(func=download,callback=alterUser)
#当func执行完毕后,return的东西会给到回调函数callback
print("---start----")
p.close()#关闭进程池,关闭后,p不再接收新的请求。
p.join()
print("---end-----")