关于python回调函数的理解

定义:

把一个函数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-----")
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值