python多进程多维数组数据传递example

import multiprocessing as mp
import numpy as np
def worker(size, idx, arr):
    array = np.zeros((size,size,size))
    print(idx)
    array[idx[0],idx[1],idx[2]] = 100
    for slice in range(size):
        for row in range(size):
            arr[slice*size*size+row*size:slice*size*size+row*size+size] = array[slice, row, :]  

if __name__==‘__main__‘:
    size = 3
    myArray_list = []
    for i in range(9):
        myArray_list.append(mp.Array(‘f‘, size*size*size))
    ps = [mp.Process(target=worker, args=(size, [x%3,x%3,x%3], myArray_list[x])) for x in range(9)]
    for p in ps:
        p.start()
    for p in ps:
        p.join()

    for x in range(9):
        print(x)
        res = np.array(myArray_list[x])
        res1 = res.reshape((size,size,size))
        print(res1)
        print(res1[1,2,0])

    print(‘after all workers finished‘)

多进程数据同步不能用global,因为不能跨进程存取,必须要用Multiprocessing的queue, Value, Array, Rawarray来做数值传递。

而且这个传递不支持多维数组,只支持一维的,所以前后要自己转换一下。

原文地址:https://www.cnblogs.com/zhanfeng-xing/p/8856684.html

时间: 2024-10-04 11:00:07

python多进程多维数组数据传递example的相关文章

基于ini配置文件实现多维数组数据的按行存储和读取

需求是为一个多维数组对象的数据按行存储到文件,需要键值对区分层级,对每个对象描述清晰.类似的格式如下: 上图中的数据对应的就是如下的数组(php 语言): $arr = array( '10003' => array( 'id' => 10003, 'tokentime' => 400), '10005' => array( 'id' => 10005, <p> 'cookie' => array(</p> 'num' => 20 ), '

计算机二级-C语言-对二维数组数据进行处理。对文件进行数据输入。形参与实参。

//函数fun的功能为:计算x所指数组中N个数的平均值(规定所有数都为正数),平均值通过形参返回给主函数,将小于平均值且最接近平均值的数作为函数值返回,并输出. //重难点:形参与实参之间,是否进行了值传递. 1 #include <stdlib.h> 2 #include <stdio.h> 3 #define N 10 4 double fun(double x[],double *av) 5 { int i,j; double d,s; 6 s=0; 7 for(i=0; i

Python的二维数组

Python一维数组初始化: >>> list=[] >>> type(list) <type 'list'> >>> list [] Python二维数组初始化: >>> lists = [[]] * 3 >>> lists [[], [], []] >>> lists[0].append(3) >>> lists [[3], [3], [3]] "[[]]

python的二维数组操作

需要在程序中使用二维数组,网上找到一种这样的用法: 1 2 3 4 5 6 #创建一个宽度为3,高度为4的数组 #[[0,0,0], # [0,0,0], # [0,0,0], # [0,0,0]] myList = [[0] * 3] * 4 但是当操作myList[0][1] = 1时,发现整个第二列都被赋值,变成 [[0,1,0], [0,1,0], [0,1,0], [0,1,0]] 为什么...一时搞不懂,后面翻阅The Python Standard Library 找到答案 lis

计算机二级-C语言-对标志位的巧妙使用。对二维数组数据进行处理。对文件进行数据输入。

//函数fun的功能是:计算形参x所指数组中平均值(规定所有数均为正数),将所指数组中大于平均值的数据移至数组的前部,小于等于的移至后部,平均值作为返回值,在主函数中输出平均值和后移的数据. //重难点:对数组的处理. 1 #include <stdlib.h> 2 #include <stdio.h> 3 #define N 10 4 double fun(double *x) 5 { int i, j; double s, av, y[N]; 6 s=0; 7 for(i=0;

python 按二维数组的某行或列排序 (numpy lexsort)

lexsort支持对数组按指定行或列的顺序排序:是间接排序,lexsort不修改原数组,返回索引. 默认按最后一行元素有小到大排序, 返回最后一行元素排序后索引所在位置. 设数组a, 返回的索引ind, a可以是1维或2维数组,ind返回的是一维数组 对于一维数组, a[ind]就是排序后的数组. 对于二维数组下面会详细举例. import numpy as np >>> a array([[ 2,  7,  4,  2], [35,  9,  1,  5], [22, 12,  3, 

python 一个二维数组和一个整数,判断数组中是否含有该整数

在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序. 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. def find(target, array): i = 0 j = len(array[0]) - 1 while i < len(array) and j >= 0: base = array[i][j] if target == base: return True elif target >

python 创建二维数组的方法

废话不多说,直接上代码: #coding=utf-8 def two_di_demo1(): a=[] for i in range(10): a.append([]) for j in range(10): a[i].append(0) print(a) def two_di_demo2(): a=[] for i in range(10): a.append([]) for j in range(10): a[i].append(0) print(a) b = [[0] * 10] * 10

python创建二维数组

1 c=[[0]*3 for i in range(3)] 2 3 c=[[0 for i in range(3)] for i in range(3)]