如何在python中使用具有多处理功能的自定义数据结构

如何在python中使用具有多处理功能的自定义数据结构,python,python-2.7,numpy,data-structures,multiprocessing,Python,Python 2.7,Numpy,Data Structures,Multiprocessing,我正在linux机器上使用python 2.7和numpy。 我正在运行一个程序,该程序涉及一个耗时的函数computeGP(level,grid),该函数以numpy数组level和对象grid的形式接收输入,该函数不修改该输入 我的目标是为不同的级别但相同的网格并行化computeGP(本地,在不同的内核上也是如此)。由于grid保持不变,因此使用共享内存无需进行同步。在我看来,我应该使用多处理模块,而不是线程。答案建议使用multiprocessing.Array高效共享,同时注意到在un

我正在linux机器上使用python 2.7和numpy。 我正在运行一个程序,该程序涉及一个耗时的函数
computeGP(level,grid)
,该函数以numpy数组
level
和对象
grid
的形式接收输入,该函数不修改该输入

我的目标是为不同的
级别
但相同的
网格
并行化
computeGP
(本地,在不同的内核上也是如此)。由于
grid
保持不变,因此使用共享内存无需进行同步。在我看来,我应该使用
多处理
模块,而不是线程。答案建议使用
multiprocessing.Array
高效共享,同时注意到在unix机器上,默认行为是不复制对象

我的问题是对象
网格
不是numpy数组。
这是一个numpy数组列表,因为我的数据结构的工作方式是,我需要访问数组(listelement)N,然后访问它的行K。
基本上,该列表只是伪造指向数组的指针

因此,我的问题是:

  • 我的理解是,在unix机器上,我可以共享对象
    网格
    无需进一步使用
    多处理
    数据类型
    数组
    (或
    )。对吗
  • 有没有更好的方法 实现这个指向数组数据结构的指针,它可以使用 高效的
    多处理。数组
  • 我不想组装一个包含列表中较小的数组的大型数组,因为较小的数组也不是很小


    欢迎有任何想法

    这个问题与你的问题非常相似:

    这里有一些答案,但如果您只使用linux,最简单的方法就是将数据结构设置为全局变量。Linux将
    fork()
    进程,它允许所有工作进程对主进程内存(全局)进行写时拷贝访问


    在这种情况下,您不需要使用任何特殊的多处理类,也不需要将任何数据传递给工作进程(级别除外)。

    因此,这个问题与您的问题非常相似:

    这里有一些答案,但如果您只使用linux,最简单的方法就是将数据结构设置为全局变量。Linux将
    fork()
    进程,它允许所有工作进程对主进程内存(全局)进行写时拷贝访问

    在这种情况下,您不需要使用任何特殊的多处理类,也不需要将任何数据传递给工作进程(级别除外)