1. #前面的队列Queue和管道Pipe都是仅仅能再进程之间传递数据,但是不能修改数据,今天我们学习的东西就可以在进程之间同时修改一份数据
  1. #Mnager就可以实现
  2. import multiprocessing
  3. import random
  4. def f(l,n):
  5. l.append(n)
  6.  
  7. if __name__ == '__main__':
  8. m = multiprocessing.Manager()
  9. m_dict = m.dict()
  10. m_list = m.list(range(4))
  11. p_list = []
  12. for i in range(10):
  13. p = multiprocessing.Process(target=f,args=(m_list,i))
  14. p.start()
  15. p_list.append(p)
  16. for p in p_list:
  17. p.join()
  18. print(m_list)

 

结果如下

  1. '''
  2. 结果如下,实现不同进程之间修改数据
  3. [0, 1, 2, 3, 0, 3, 1, 4, 6, 2, 8, 9, 7, 5]
  4.  
  5. '''
  1. # 进程池,允许同一时间最多有多少个进程在运行,因为进程非常耗费资源
  1. import time
  2. import multiprocessing
  3.  
  4. def Foo(i):
  5. time.sleep(2)
  6. return i + 100
  7.  
  8. def Bar(arg):
  9. print("---exec down:",arg)
  10.  
  11. if __name__ == '__main__':
  12. multiprocessing.freeze_support()
  13. #windows的多进程必须要加这个一项
  14. pool = multiprocessing.Pool(3)
  15. for i in range(10):
  16. pool.apply_async(func=Foo,args=(i,),callback=Bar)
  17. #这句话有3个意思
  18. #1、apply_async这个意思是异步执行
  19. #2、这里的意思执行Foo,参数为i,callback这里的意思就是Foo这个函数的返回值作为Bar的函数输入,这个是自动传递的;
  20. #3、这里还有一个意思是,执行Foo这个函数后,然后才执行Bar这个函数
    #4、这里我们可以在Bar这个函数中接受子进程的执行结果,我们就可以把这个结果放在一个list中,从而也可以间接获取到子进程的执行结果
  21. print("end")
  22. pool.close()
  23. pool.join()
  24. #pool的时候必须先close,然后在join,这个必须要记住,pool的用法不一样

结果如下

  1. end
  2. ---exec down: 100
  3. ---exec down: 101
  4. ---exec down: 102
  5. ---exec down: 103
  6. ---exec down: 104
  7. ---exec down: 105
  8. ---exec down: 106
  9. ---exec down: 107
  10. ---exec down: 108
  11. ---exec down: 109

 

python进程之间修改数据[Manager]与进程池[Pool]的更多相关文章

  1. Python 进程之间共享数据

    最近遇到多进程共享数据的问题,到网上查了有几篇博客写的蛮好的,记录下来方便以后查看. 一.Python multiprocessing 跨进程对象共享  在mp库当中,跨进程对象共享有三种方式,第一种 ...

  2. Python 进程之间共享数据(全局变量)

    进程之间共享数据(数值型): import multiprocessing def func(num): num.value=10.78 #子进程改变数值的值,主进程跟着改变 if __name__= ...

  3. 用WM_COPYDATA消息来实现两个进程之间传递数据

    文着重讲述了如果用WM_COPYDATA消息来实现两个进程之间传递数据. 进程之间通讯的几种方法:在Windows程序中,各个进程之间常常需要交换数据,进行数据通讯.常用的方法有   1.使用内存映射 ...

  4. 进程队列(Queue),Pipe(管道), Manager 进行进程之间的数据传递和传输

    进程Queue,实现进程传输的队列 1.Queue from multiprocessing import Process, Queue def f(q): q.put('1') q.put('2') ...

  5. 进程之间的数据共享 -----Manager模块

    展望未来,基于消息传递的并发编程是大势所趋 即便是使用线程,推荐做法也是将程序设计为大量独立的线程集合,通过消息队列交换数据. 这样极大地减少了对使用锁定和其他同步手段的需求,还可以扩展到分布式系统中 ...

  6. 进程间共享数据Manager

    一.前言 进程间的通信Queue()和Pipe(),可以实现进程间的数据传递.但是要使python进程间共享数据,我们就要使用multiprocessing.Manager. Manager()返回的 ...

  7. Python 之并发编程之manager与进程池pool

    一.manager 常用的数据类型:dict list 能够实现进程之间的数据共享 进程之间如果同时修改一个数据,会导致数据冲突,因为并发的特征,导致数据更新不同步. def work(dic, lo ...

  8. VC++共享数据段实现进程之间共享数据

    当我写了一个程序,我希望当这个程序同时运行两遍的时候,两个进程之间能共享一些全局变量,怎么办呢?很简单,使用VC\VC++的共享数据段.; #pragma data_seg()//恢复到正常段继续编程 ...

  9. 使用RandomAccessFile在两个java进程之间传递数据

    大部分情况下,我们面对在两个java进程只见传递数据的问题时,第一个想到的就是开server,然后通过socket收发消息.这方面有大量的框架可用,就不细说了.但如果两个进程是在一台机器上,那么还可以 ...

随机推荐

  1. 1048 Find Coins (25 分)

    1048 Find Coins (25 分) Eva loves to collect coins from all over the universe, including some other p ...

  2. Linux常用的一些基础命令

    删除 rm -rvf * -f:强制删除文件或文件夹 -r:递归的删除文件或文件夹 -i:删除文件或文件夹前需要确认 -v:详细显示进行步骤 查看 ls ll        ls -l cat mor ...

  3. idea配置(卡顿、开发环境等配置),code style template

    Tomcat配置VM Options:    -XX:PermSize=512m -XX:MaxPermSize=1024m 1.IDEA卡顿,修改IDEA使用内存 修改idea配置文件 在IDEA的 ...

  4. Installation of Scylla on CentOS 7

    Scylla on CentOS 7 Use these steps to install Scylla using Yum repositories on CentOS. Prerequisites ...

  5. mysql 更新(二)安装和基本管理

    03-MySql安装和基本管理   本节掌握内容: MySQL的介绍安装.启动 MySQL破解密码 MySQL中统一字符编码 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目 ...

  6. async task 异步消息

     async 和 await 是用来定义的异步方法,async  关键字是上下文关键字,原因在于只有当它修饰方法.lambda 表达式或匿名方法时,它才是关键字. 在所有其他上下文中,都会将其解释为标 ...

  7. 简单学习Git

    Git是什么? Git是目前世界上最先进的分布式版本控制系统(没有之一). Git有什么特点?简单来说就是:高端大气上档次! Git的发展历史 很多人都知道,Linus在1991年创建了开源的Linu ...

  8. angularjs 整合 bootstrap

    第一步 :下载 bootstrap  jquery  ppper.js npm install bootstrap@4.0.0-beta.2 jquery popper.js --save 第二步: ...

  9. 【转】Ultra simple ISO-7816 Interface

    原文出自 http://hilbert-space.de/?p=135 While laying out a PCB for my SWP reader project I realized that ...

  10. XE6 任务栏 控件

    WIN7/WIN8 ONLY,鼠标放在任务栏上,预览程序界面,用此控件可以预览安装进度条. Taskbar1->ProgressMaxValue = 100;  Taskbar1->Pro ...