进程间通讯-3(Manager)

Manager 可以实现列表,字典,变量,锁,信号量,事件等的数据之间的共享。Manager已经默认加锁了。

from multiprocessing import Process, Manager
import os
def f(d, l):
    d[1] = ‘1‘
    d[‘2‘] = 2
    d[0.25] = None
    d[os.getpid()]=os.getpid()
    l.append(os.getpid()) #获取进程号
    print(l)

if __name__ == ‘__main__‘:
    with Manager() as manager: #manager=Manager()
        d = manager.dict() #生成一个在多个进程之间可以传递共享的字典,
        l = manager.list(range(5)) #生成一个可在多个进程之间传递和共享的列表,已经存放了5个元素
        p_list = [] #存放结果

        for i in range(10):
            p = Process(target=f, args=(d, l))
            p.start()
            p_list.append(p)

        for res in p_list: #等待结果
            res.join()

        print(d)
        print(l)

运行结果:

C:\abccdxddd\Oldboy\python-3.5.2-embed-amd64\python.exe C:/abccdxddd/Oldboy/Py_Exercise/Day10/Manager_tes.py
[0, 1, 2, 3, 4, 12836]
[0, 1, 2, 3, 4, 12836, 11324]
[0, 1, 2, 3, 4, 12836, 11324, 15000]
[0, 1, 2, 3, 4, 12836, 11324, 15000, 9576]
[0, 1, 2, 3, 4, 12836, 11324, 15000, 9576, 14476]
[0, 1, 2, 3, 4, 12836, 11324, 15000, 9576, 14476, 13960]
[0, 1, 2, 3, 4, 12836, 11324, 15000, 9576, 14476, 13960, 14504]
[0, 1, 2, 3, 4, 12836, 11324, 15000, 9576, 14476, 13960, 14504, 4208]
[0, 1, 2, 3, 4, 12836, 11324, 15000, 9576, 14476, 13960, 14504, 4208, 12984]
[0, 1, 2, 3, 4, 12836, 11324, 15000, 9576, 14476, 13960, 14504, 4208, 12984, 11724]
{0.25: None, 1: ‘1‘, 12836: 12836, 13960: 13960, 11724: 11724, 12984: 12984, 14476: 14476, ‘2‘: 2, 9576: 9576, 4208: 4208, 14504: 14504, 15000: 15000, 11324: 11324}
[0, 1, 2, 3, 4, 12836, 11324, 15000, 9576, 14476, 13960, 14504, 4208, 12984, 11724]

Process finished with exit code 0
时间: 2024-10-03 00:15:37

进程间通讯-3(Manager)的相关文章

进程间通讯的三种方式

# 进程间通讯 # 1.进程对列multiprocessing.Quere import multiprocessing, time def foo(q): time.sleep(1) print('son process', id(q)) q.put(123) q.put('alex') if __name__ == '__main__': q = multiprocessing.Queue() print('main process', id(q)) p = multiprocessing.

【进程间通讯与进程池】 -- 2019-08-11 18:46:25

原文: http://106.13.73.98/__/4/ 目录 一.队列 二.管道 三.进程间数据共享 四.进程池 进程间通讯:IPC(Inter-Process Communication) 一.队列: 队列:先进先出(First In First Out)简称 FIFO 栈:先进后出(First In Last Out)简称 FILO 1. multiprocessing.Queue模块 用于创建共享的进程队列,Queue是多进程安全的队列,可以实现对进程之间的数据传递,队列底层是使用管道

【进程间通讯与进程池】 -- 2019-08-16 18:12:52

原文: http://blog.gqylpy.com/gqy/230 " 目录 一.队列 二.管道 三.进程间数据共享 四.进程池 进程间通讯:IPC(Inter-Process Communication) 一.队列: 队列:先进先出(First In First Out)简称 FIFO 栈:先进后出(First In Last Out)简称 FILO 1. multiprocessing.Queue模块 用于创建共享的进程队列,Queue是多进程安全的队列,可以实现对进程之间的数据传递,队列

【进程间通讯与进程池】 𶥔

原文: http://blog.gqylpy.com/gqy/230 " 目录 一.队列 二.管道 三.进程间数据共享 四.进程池 进程间通讯:IPC(Inter-Process Communication) 一.队列: 队列:先进先出(First In First Out)简称 FIFO 栈:先进后出(First In Last Out)简称 FILO 1. multiprocessing.Queue模块 用于创建共享的进程队列,Queue是多进程安全的队列,可以实现对进程之间的数据传递,队列

win32进程间通讯--共享内存

小白一枚,如有不对,请各位大神多多指教! 最近看了看win32进程间通讯.简单写了写利用共享内存实现进程间通讯 使用共享内存实现进程间通讯: 1.在WM_CREATE消息下创建文件映射内核对象 1 hMapFile = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, BUF_SIZE, (LPCWSTR)szName); 2.在需要进行数据共享的地方映射缓存区视图,将要写入的数据放入pbuf 1 pBuf = (c

linux进程间通讯-System V IPC 信号量

进程间通信的机制--信号量.注意请不要把它与之前所说的信号混淆起来,信号与信号量是不同的两种事物.有关信号的更多内容,可以阅读我的另一篇文章:Linux进程间通信--使用信号.下面就进入信号量的讲解. 一.什么是信号量 为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,我们需要一种方法,它可以通过生成并使用令牌来授权,在任一时刻只能有一个执行线程访问代码的临界区域.临界区域是指执行数据更新的代码需要独占式地执行.而信号量就可以提供这样的一种访问机制,让一个临界区同一时间只有一个线程在

ACE框架 基于共享内存的进程间通讯

ACE框架将基于共享内存的进程间通讯功能,如其它IO组件或IPC组件一样,设计成三个组件.流操作组件ACE_MEM_Stream,连接器组件ACE_MEM_Connector,以及接收连接组件ACE_MEM_Accpter.ACE框架为基于共享内存的进程间通讯提供了两种数据传输(分发deliver)策略.一种是使用生产者-消费者队列的一对多的多用户MT策略,另一种是使用socket流的可以使用反应器响应数据接收事件的Reactor策略.不论哪一种策略都要通过socket进行TCP连接,并进行进程

C#进程间通讯技术-整理。

原文:C#进程间通讯技术-整理. 扩展阅读:http://www.cnblogs.com/joye-shen/archive/2012/06/16/2551864.html 一.进程间通讯的方式 1)共享内存 包括:内存映射文件,共享内存DLL,剪切板. 2)命名管道及匿名管道 3)消息通讯 4)利用代理方法.例如SOCKET,配置文件,注册表方式. 等方式. 方法一:通讯. 进程间通讯的方式有很多,常用的有共享内存(内存映射文件.共享内存DLL.剪切板等).命名管道和匿名管道.发送消息等几种方

Android AIDL 进行进程间通讯(IPC)

编写AIDL文件时,需要注意: 1.接口名和aidl文件名相同. 2.接口和方法前不用加访问权限修饰符 (public.private.protected等,也不能用final.static). 3.AIDL默认支持的类型包括java基本类型 (int.long.boolean等) 和 (String.List.Map.CharSequence),使用这些类型时不需要import声明.对于List和Map中的元素类型必须是AIDL支持的类型,如果使用自定义类型作为参数或者返回值,自定义类型必须实