使用manager在进程之间事项共享数据.

栗子:

主进程调用manager,创建一个字典d和一个列表l,启动十个子进程,每个子进程都向d和l中放数据

from multiprocessing import Process,Manager
import os def func(d,l):
d[os.getpid()] = os.getpid()
l.append(os.getpid())
print(d)
print(l) if __name__ == '__main__':
with Manager() as manager:#不需要加锁 自动加了
d = manager.dict()#使用manager创建一个字典对象
l = manager.list(range(5))#使用manager创建一个列表对象
p_list = []
for i in range(10):
p = Process(target=func,args=(d,l))
p_list.append(p)
p.start()
for p in p_list:
p.join()
print(d)
print(l)

输出结果:

D:\7_Python\Python37\python.exe D:/7_Python/S14/其他/aaaa.py
{10120: 10120}
[0, 1, 2, 3, 4, 10120]
{10120: 10120, 9700: 9700}
[0, 1, 2, 3, 4, 10120, 9700]
{10120: 10120, 9700: 9700, 4968: 4968}
[0, 1, 2, 3, 4, 10120, 9700, 4968]
{10120: 10120, 9700: 9700, 4968: 4968, 14212: 14212}
[0, 1, 2, 3, 4, 10120, 9700, 4968, 14212]
{10120: 10120, 9700: 9700, 4968: 4968, 14212: 14212, 2884: 2884}
[0, 1, 2, 3, 4, 10120, 9700, 4968, 14212, 2884]
{10120: 10120, 9700: 9700, 4968: 4968, 14212: 14212, 2884: 2884, 4860: 4860}
[0, 1, 2, 3, 4, 10120, 9700, 4968, 14212, 2884, 4860]
{10120: 10120, 9700: 9700, 4968: 4968, 14212: 14212, 2884: 2884, 4860: 4860, 9712: 9712}
[0, 1, 2, 3, 4, 10120, 9700, 4968, 14212, 2884, 4860, 9712]
{10120: 10120, 9700: 9700, 4968: 4968, 14212: 14212, 2884: 2884, 4860: 4860, 9712: 9712, 14164: 14164}
[0, 1, 2, 3, 4, 10120, 9700, 4968, 14212, 2884, 4860, 9712, 14164]
{10120: 10120, 9700: 9700, 4968: 4968, 14212: 14212, 2884: 2884, 4860: 4860, 9712: 9712, 14164: 14164, 15000: 15000, 2948: 2948}
[0, 1, 2, 3, 4, 10120, 9700, 4968, 14212, 2884, 4860, 9712, 14164, 15000, 2948]
{10120: 10120, 9700: 9700, 4968: 4968, 14212: 14212, 2884: 2884, 4860: 4860, 9712: 9712, 14164: 14164, 15000: 15000, 2948: 2948}
[0, 1, 2, 3, 4, 10120, 9700, 4968, 14212, 2884, 4860, 9712, 14164, 15000, 2948]
{10120: 10120, 9700: 9700, 4968: 4968, 14212: 14212, 2884: 2884, 4860: 4860, 9712: 9712, 14164: 14164, 15000: 15000, 2948: 2948}
[0, 1, 2, 3, 4, 10120, 9700, 4968, 14212, 2884, 4860, 9712, 14164, 15000, 2948] Process finished with exit code 0

多进程manager共享的更多相关文章

  1. multiprocessing.Manager共享内存的问题记录

    问题:https://stackoverflow.com/questions/8640367/python-manager-dict-in-multiprocessing 使用 multiproces ...

  2. .net4.0多进程间共享内存实现通信(VB.Net)

    .net4.0新增内存共享功能,从而很方便的实现了多进程间通信. 源码下载

  3. python学习笔记——多进程中共享内存Value & Array

    1 共享内存 基本特点: (1)共享内存是一种最为高效的进程间通信方式,进程可以直接读写内存,而不需要任何数据的拷贝. (2)为了在多个进程间交换信息,内核专门留出了一块内存区,可以由需要访问的进程将 ...

  4. Memcached Session Manager 共享tomcat session设置

    tomcat的lib下添加jar包 修改tomcat的conf目录下的context.xml文件 新增 sessionCookiePath="/" <Manager clas ...

  5. Remote desktop manager共享账号

    因为多个远程机器,是会用了域账号进行登录的.而域账号的密码,三个月之后,密码强制过期 添加一个新的entry,类型是Credential Entry,然后选择用户名/密码 在remote deskto ...

  6. python并发编程之多进程(三):共享数据&进程池

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

  7. 多进程共享内存的MemoryStream

    文章转载于http://www.raysoftware.cn/?p=506 具体用处呢,有很多,比如多进程浏览器共享Cookie啦,多个进程传送点数据啦. 共享内存封装. 封装成了MemoryStre ...

  8. 多线程/多进程/异步IO

    SOCK_STREAM :TCPSOCK_Dgram :UDP family=AF_INET: 服务器之间的通信AF_INET6: 服务器之间的通信AF_UNIX: Unix不同进程间的通信 永远遵循 ...

  9. 三种进程和线程数据共享模块方法Queue》Pipe》manager

    >>>>线程中的queue import threading import queue def f(qq): print("in child",qq.qsi ...

随机推荐

  1. 生成器和迭代器_python

    一.生成器简介(generator) 在进行较大数据的存储,如果直接存储在列表之中,则会可能造成内存的不够与速度的减慢,因为列表创建完是立即创建并存在的,而在python中生成器(generator) ...

  2. echart--自己写的例子

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...

  3. MyEclipse设置不编译js部分

    https://jingyan.baidu.com/album/ca41422fe094251eae99ede7.html?picindex=1 步骤: 1)选中当前工程,右键单击properties ...

  4. java List 排序,升序,降序

    import java.util.*; public class EntrySets { public static void main(String[] args) { Map<Object, ...

  5. C++/CLI剪辑

    1.本地类中包含托管类成员变量的情况 #include<vcclr.h> // 必须包含vcclr.h头文件 //传入 A^ a = gcnew A(); gcroot<A^> ...

  6. Vue中import '@...'的意思

    转载: https://blog.csdn.net/xiazeqiang2018/article/details/81325996 写项目的时候看到很多导入都是@开头,这是webpack的路径别名,相 ...

  7. CentOS7下MariaDB数据库安装及配置

    前言 MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品.在存 ...

  8. OpenCV图像载入、显示和输出到文件以及滑块的使用

    图像载入 imread()函数 Mat imread(const string& filename, int flags = 1); 第一个参数为文件名 第二个参数为载入标识 flags &g ...

  9. mysql 实践(例题)

    MySQL安装见本博 安装成功后,开始菜单中找到 “MySQL 8.0 Command Line Client” 进行启动(启动后,可直接输入MySQL密码) 1. create database 数 ...

  10. Go之第三方库ini

    文章转自 快速开始 my.ini # possible values : production, development app_mode = development [paths] # Path t ...