博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
进程池的回调函数callback
阅读量:6679 次
发布时间:2019-06-25

本文共 1144 字,大约阅读时间需要 3 分钟。

如下代码:

from multiprocessing import Pooldef func1(n):    print('in func1')    return n*ndef func2(nn):    print('in func2')    print(nn)if __name__ == "__main__":    pool = Pool(5)    pool.apply_async(func1, args=(10,))    pool.close()    pool.join()

结果是 in func1

这是通过回调函数就可以执行func2了:

from multiprocessing import Pooldef func1(n):    print('in func1')    return n*ndef func2(nn):    print('in func2')    print(nn)if __name__ == "__main__":    pool = Pool(5)    pool.apply_async(func1, args=(10,), callback=func2)    pool.close()    pool.join()

打印结果:

in func1in func2100

这回调函数的作用就是将函数func1的返回值传给func2,并执行func2函数,所以不能在pool.apply_async里面单独给func2传值,func2接受的参数就是func1的返回值。

判断func2在子进程还是主进程:

from multiprocessing import Poolimport osdef func1(n):    print('in func1', os.getpid())    return n*ndef func2(nn):    print('in func2', os.getpid())    print(nn)if __name__ == "__main__":    print('主进程:', os.getpid())    pool = Pool(5)    pool.apply_async(func1, args=(10,), callback=func2)    pool.close()    pool.join()

打印结果:

主进程: 14688in func1 11928in func2 14688100

func2在主进程里面。

所以回调函数就是回到主进程继续执行。

结束!

 

转载于:https://www.cnblogs.com/aaronthon/p/9846338.html

你可能感兴趣的文章
[ASP.NET MVC 小牛之路]03 - Razor语法(转)
查看>>
linux系统下make & make install
查看>>
053医疗项目-模块五:权限设置-将用户操作权限写入Session
查看>>
DocX开源WORD操作组件的学习系列一
查看>>
box2dflash flash物理引擎
查看>>
python 守护线程和loggin模块
查看>>
大数记录之,大数乘整型数nyoj832
查看>>
使用Unity3D自带动画系统制作下雨效果
查看>>
02 svn 文件提交与目录结构
查看>>
ConcurrentHashMap vs Collections.synchronizedMap()不同
查看>>
深入Spring Boot--使用Arthas排查应用404/401问题
查看>>
0707 - iTips v0.0.1
查看>>
java基础(三) 加强型for循环与Iterator
查看>>
ReactNaive之CSS和Flex布局
查看>>
自制分布式漏洞扫描
查看>>
waf 绕过的技巧
查看>>
Android鬼点子 如此Q弹!
查看>>
Essay
查看>>
前端面试自查
查看>>
解读 Node 核心模块 Stream 系列一( Readable )
查看>>