python进程之间修改数据[Manager]与进程池[Pool]
#前面的队列Queue和管道Pipe都是仅仅能再进程之间传递数据,但是不能修改数据,今天我们学习的东西就可以在进程之间同时修改一份数据
#Mnager就可以实现
import multiprocessing
import random
def f(l,n):l.append(n)if __name__ == '__main__':m = multiprocessing.Manager()m_dict = m.dict()m_list = m.list(range(4))p_list = []for i in range(10):p = multiprocessing.Process(target=f,args=(m_list,i))p.start()p_list.append(p)for p in p_list:p.join()print(m_list)
结果如下
'''
结果如下,实现不同进程之间修改数据
[0, 1, 2, 3, 0, 3, 1, 4, 6, 2, 8, 9, 7, 5]'''
# 进程池,允许同一时间最多有多少个进程在运行,因为进程非常耗费资源
import time
import multiprocessingdef Foo(i):time.sleep(2)return i + 100def Bar(arg):print("---exec down:",arg)if __name__ == '__main__':multiprocessing.freeze_support()#windows的多进程必须要加这个一项pool = multiprocessing.Pool(3)for i in range(10):pool.apply_async(func=Foo,args=(i,),callback=Bar)#这句话有3个意思#1、apply_async这个意思是异步执行#2、这里的意思执行Foo,参数为i,callback这里的意思就是Foo这个函数的返回值作为Bar的函数输入,这个是自动传递的;#3、这里还有一个意思是,执行Foo这个函数后,然后才执行Bar这个函数 #4、这里我们可以在Bar这个函数中接受子进程的执行结果,我们就可以把这个结果放在一个list中,从而也可以间接获取到子进程的执行结果print("end")pool.close()pool.join()#pool的时候必须先close,然后在join,这个必须要记住,pool的用法不一样
结果如下
end
---exec down: 100
---exec down: 101
---exec down: 102
---exec down: 103
---exec down: 104
---exec down: 105
---exec down: 106
---exec down: 107
---exec down: 108
---exec down: 109
转载于:https://www.cnblogs.com/bainianminguo/p/7407270.html
python进程之间修改数据[Manager]与进程池[Pool]相关推荐
- python跨文件全局变量_Python 进程之间共享数据(全局变量)的方法
进程之间共享数据(数值型): import multiprocessing def func(num): num.value=10.78 #子进程改变数值的值,主进程跟着改变 if __name__= ...
- python进程共享全局变量 时延_Python 进程之间共享数据(全局变量)的方法
进程之间共享数据(数值型): import multiprocessing def func(num): num.value=10.78 #子进程改变数值的值,主进程跟着改变 if __name__= ...
- Python 进程之间共享数据(全局变量)
Python 进程之间共享数据(全局变量) 进程之间共享数据(数值型): import multiprocessing def func(num): num.value=10.78 #子进程改变数值的 ...
- 用WM_COPYDATA消息来实现两个进程之间传递数据
文着重讲述了如果用WM_COPYDATA消息来实现两个进程之间传递数据. 进程之间通讯的几种方法: 在Windows程序中,各个进程之间常常需要交换数据,进行数据通讯.常用的方法有 1.使用内存映 ...
- 使用内存映射文件在进程之间共享数据
数据共享方法是通过让两个或多个进程映射同一个文件映射对象的视图来实现的,这意味着它们将共享物理存储器的同一个页面.因此,当一个进程将数据写入一个共享文件映射对象的视图时,其他进程可以立即看到它们视图中 ...
- Python 之并发编程之manager与进程池pool
一.manager 常用的数据类型:dict list 能够实现进程之间的数据共享 进程之间如果同时修改一个数据,会导致数据冲突,因为并发的特征,导致数据更新不同步. def work(dic, lo ...
- linux_进程类相关学习-fork函数-getpid函数-getppid函数-getuid函数-geteuid函数-getgid函数-getegid函数-进程之间共享数据-进程gdb调试
接上一篇:linux_环境变量-C语言代码打印环境变量-getenv函数-setenv函数-unsetenv函数 本次来分享进程类相关的学习,主要就是分享一些函数的使用,来,开始上菜: 目录 1.fo ...
- 将读写锁放到共享内存中,实现进程之间对数据的读写访问控制
代码 #include <unistd.h> #include <sys/types.h> #include <sys/ipc.h> #include <sy ...
- python pandas DataFrame 修改数据
文章目录 修改行名 修改列名 修改行数据 修改列数据 修改单个数据 import pandas as pd df1 = pd.DataFrame({'日期': ['2021-7-2', '2021-8 ...
- python 多进程共享变量manager_python 进程间共享数据 multiprocessing 通信问题 — Manager...
Python中进程间共享数据,处理基本的queue,pipe和value+array外,还提供了更高层次的封装.使用multiprocessing.Manager可以简单地使用这些高级接口. Mana ...
最新文章
- 帮你理清 SpringBoot 与 SpringMVC 的关系
- Git+SourceTree使用时出现的问题
- python自建模块导入_Python模块的使用及自建模块的导入方法举例
- [css] 为什么说css的选择器是从右向左匹配?
- 【BZOJ - 3450】Tyvj1952 Easy(数学期望,期望的线性性)
- 如何让程序员变得没朋友
- general protection fault怎么办_法院离婚调解书我想办补充协议怎么办?-免费法律咨询...
- centos7 编译安装 python3.5
- Effective_STL 学习笔记(四十五) 注意 count、find、binary_search、lower_bound、upper_bound 和 equal_range 的区别...
- 终于来了,电力铁塔远程维护解决方案
- 【python】函数和模块
- win7+VS2008安装QT、环境配置以及简单实例演示
- 【SLAM小车】硬件_TB6612FNG设计记录
- 想学一门技术,学java有前途吗?
- 仿真BPSK调制在AWGN信道下分别使用卷积码和未使用卷积码的性能对比,其中,卷积码的约束长度为7,生成多项式为[171,133],码率为1/2,译码分别采用硬判决译码和软判决译码
- 【FFMpeg】源码编译
- int类型和number类型区别
- python小游戏——俄罗斯方块
- RGB 色度空间转换
- Xilinx FPGA----ChipScope(硬件仿真 Core inserter方法)