进程池的回调函数callback
如下代码:
from multiprocessing import Pool def func1(n):
print('in func1')
return n*n def 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 Pool def func1(n):
print('in func1')
return n*n def 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 func1
in func2
100
这回调函数的作用就是将函数func1的返回值传给func2,并执行func2函数,所以不能在pool.apply_async里面单独给func2传值,func2接受的参数就是func1的返回值。
判断func2在子进程还是主进程:
from multiprocessing import Pool
import os def func1(n):
print('in func1', os.getpid())
return n*n def 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()
打印结果:
主进程: 14688
in func1 11928
in func2 14688
100
func2在主进程里面。
所以回调函数就是回到主进程继续执行。
结束!
进程池的回调函数callback的更多相关文章
- Python 3 并发编程多进程之进程池与回调函数
Python 3 进程池与回调函数 一.进程池 在利用Python进行系统管理的时候,特别是同时操作多个文件目录,或者远程控制多台主机,并行操作可以节约大量的时间.多进程是实现并发的手段之一,需要注意 ...
- python语法基础-并发编程-进程-进程池以及回调函数
############### 进程池 ############## """ 进程池的概念 为什么会有进程池? 1,因为每次开启一个进程,都需要创建一个内存空间 ...
- python并发编程之多进程2-------------数据共享及进程池和回调函数
一.数据共享 1.进程间的通信应该尽量避免共享数据的方式 2.进程间的数据是独立的,可以借助队列或管道实现通信,二者都是基于消息传递的. 虽然进程间数据独立,但可以用过Manager实现数据共享,事实 ...
- python并发编程之多进程2-(数据共享及进程池和回调函数)
一.数据共享 1.进程间的通信应该尽量避免共享数据的方式 2.进程间的数据是独立的,可以借助队列或管道实现通信,二者都是基于消息传递的. 虽然进程间数据独立,但可以用过Manager实现数据共享,事实 ...
- python并发编程之多进程2数据共享及进程池和回调函数
一.数据共享 尽量避免共享数据的方式 可以借助队列或管道实现通信,二者都是基于消息传递的. 虽然进程间数据独立,但可以用过Manager实现数据共享,事实上Manager的功能远不止于此. 命令就是一 ...
- Python之网路编程之进程池及回调函数
一.数据共享 1.进程间的通信应该尽量避免共享数据的方式 2.进程间的数据是独立的,可以借助队列或管道实现通信,二者都是基于消息传递的. 虽然进程间数据独立,但可以用过Manager实现数据共享,事实 ...
- python中进程池和回调函数
一.数据共享 1.进程间的通信应该尽量避免共享数据的方式 2.进程间的数据是独立的,可以借助队列或管道实现通信,二者都是基于消息传递的. 虽然进程间数据独立,但可以用过Manager实现数据共享,事实 ...
- Python 进程池的回调函数
import os from multiprocessing import Pool,Process def f1(n): print('进程池里面的进程id',os.getpid()) print( ...
- 进程池与回调函数与正则表达式和re爬虫例子
# 使用进程池的进程爬取网页内容,使用回调函数处理数据,用到了正则表达式和re模块 import re from urllib.request import urlopen from multipro ...
随机推荐
- HTML5 学习02——新元素:canvas
HTML5 Canvas <canvas>标签:使用脚本 (通常是JavaScript)来绘制图形——默认情况下 <canvas> 元素没有边框和内容. 在画布上(Canvas ...
- HA主备路由模式的原理 + HA和负载均衡的区别
HA主备路由模式的原理 HA是High Availability缩写,即高可用性 ,可防止网络中由于单个防火墙的设备故障或网络故障导致网络中断,保证网络服务的连续性和安全强度.目前,ha功能已经 ...
- spring注解之@profile
spring中@profile与maven中的profile很相似,通过配置来改变参数. 例如在开发环境与生产环境使用不同的参数,可以配置两套配置文件,通过@profile来激活需要的环境,但维护两套 ...
- hadoop2.7.3编译,支持snappy、bzip2本地压缩
软件包: apache-ant-1.9.9-bin.tar.gz apache-maven-3.3.9-bin.tar.gz apache-tomcat-6.0.44.tar.gz CentOS-6. ...
- 【T11】提防对等实体的不友好动作
1.好的软件应该能够处理各种可能的错误,也就是防御式编程. 2.作为服务端,应该检测客户端的终止,客户端的无效输入.
- jvm理论-字节码指令案例
案例1 public class Demo { public int calc(){ int a=100; int b=200; int c=300; return(a+b)*c; } public ...
- WPF参考
web 调用本地exe 程序,传入参数https://www.cnblogs.com/anjou/p/10045177.html WPF常用控件样式https://www.cnblogs.com/s0 ...
- EAS开发报错 :数据库表 或 视图 不存在
一:原因分析 建模之后,发布数据时未能及时在数据库创建相应的表格或视图. 二:解决办法 建模视图下——右键模型——更新数据库. 三:名称字段.描述字段在数据库里的存储格式 ...
- OpenLayers4地图实例-功能齐全
网址:http://api.rivermap.cn/openlayers4/map.min.html 标注 工具
- SNF框架及机器人2018年1-9月份升级内容
1月 增加评星控件.年月选择控件 完善表格弹框的封装,增加多选弹框 的封装 增加表格 单元格合并.列头必填与可填写的标识 4月 关于分页查询和排序的各种修改(扶额) 导入excel优化 bs计算合计的 ...