如何在Windows上64位Python上有效地将numpy数组转换为共享内存对象

时间:2014-03-27 21:55:37

标签: python windows 64-bit shared-memory

我有一个很大的numpy数组,我想转换为共享内存对象,以便使用多个进程同时处理它。

例如,可以使用以下命令创建numpy数组:

M=rand(1000000000) 

这需要大约15秒,并使用大约8GB的内存。 我使用以下代码将M转换为共享内存对象:

from multiprocessing.sharedctypes import RawArray
sys.maxint=2**64
N=RawArray("d",M)

这需要18分钟,并在转换过程中消耗额外的46GB内存(转换完成后内存消耗仍为8GB)。

转换过程的长时间运行和高内存消耗使我不适合在多处理中有效地使用它。

那里有任何有效的解决方案吗?

1 个答案:

答案 0 :(得分:0)

我一直在努力寻找与您相同的解决方案,我提出的问题是,如果不是不可能的话,它就不可能像在多处理手册之后的unix系统那样。在我的情况下,它只能共享一个int。当我在进程之间修改数组时,数组不会更新。