Python 多进程 multiprocessing 实现进程通讯间通讯 <二>多进程

Python 多进程 multiprocessing 实现进程通讯间通讯 <一>进程池 : https://blog.youkuaiyun.com/YMY_mine/article/details/108285674

 

Python 多线程之间共享变量很简单,直接定义全局 global 变量即可。而多进程之间是相互独立的执行单元,这种方法就不可行了。

不过 Python 标准库已经给我们提供了这样的能力,使用起来也很简单。但要分两种情况来看,一种是 Process 多进程,一种是 Pool 进程池的方式。下面来说Process多进程的共享方式

在多进程情况下,由于每个进程有自己独立的内存空间,怎样能实现内存共享呢?multiprocessing模块提供了Value, Array,这两个是函数

Array:

#!/usr/bin/python
# -*- coding: utf-8 -*-
import multiprocessing
 
 
def func(num):
 
    # 共享数组型变量
    num[2] = 9999
 
 
if __name__ == '__main__':
    # 共享数组型变量
    num = multiprocessing.Array('i', [1, 2, 3, 4, 5, 6])
    print(num[:])   #[1, 2, 3, 4, 5, 6]
 
    p = multiprocessing.Process(target=func, args=(num,))
    p.start()
    p.join()
 
    # 共享数组型变量
    print(num[:])   #[1, 2, 9999, 4, 5, 6]

 Value:# 共享数值型变量 multiprocessing.Value(typecode_or_type, *args[,lock])


def func(num):
    # 共享数值型变量
    num.value = 2
 
if __name__ == '__main__':
    # 共享数值型变量
    num = multiprocessing.Value('d', 1)      #Value('h', 1)   整形
    print(num.value)   #1.0
 
 
    p = multiprocessing.Process(target=func, args=(num,))
    p.start()
    p.join()
 
    # 共享数值型变量
    print(num.value)   #2.0

   对于共享整数或者单个字符,初始化比较简单,参照下图映射关系:

参考:https://juejin.cn/post/6856222178250391560

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值