Python多处理共享内存:列表列表

Python多处理共享内存:列表列表,python,multiprocessing,shared-memory,Python,Multiprocessing,Shared Memory,是否可以使用或类似方法共享列表列表的内存?另外,是否可以共享更复杂的对象,例如scipy.sparse.lil_矩阵?我该怎么做呢?这两者都有什么例子吗?这个变量不需要修改,但它会消耗大量内存(每个进程约1GB),我希望共享内存可以减少内存使用。或者这是不正确的?一般来说,不是(Python在写时复制多处理方面尤其糟糕,因为即使读取对象也意味着更改其refcount,这是一个写操作) 但是,您可以尝试使用内存映射文件。将数据集转储到一个文件中,从多个进程中打开数据集,并从操作系统的I/O缓存中获

是否可以使用或类似方法共享列表列表的内存?另外,是否可以共享更复杂的对象,例如
scipy.sparse.lil_矩阵
?我该怎么做呢?这两者都有什么例子吗?这个变量不需要修改,但它会消耗大量内存(每个进程约1GB),我希望共享内存可以减少内存使用。或者这是不正确的?

一般来说,不是(Python在写时复制多处理方面尤其糟糕,因为即使读取对象也意味着更改其refcount,这是一个写操作)

但是,您可以尝试使用内存映射文件。将数据集转储到一个文件中,从多个进程中打开数据集,并从操作系统的I/O缓存中获益


你在用你的数据集做什么?

你指的是mmap吗?这能解决内存问题吗?有没有可能链接到一个相关的例子让我开始呢?数据集是worker函数中包含的科学模型的多维启发式校准数据。是的,我说的是mmap——其思想是将数据存储在硬盘上,并依靠操作系统的缓存将数据移入和移出内存。但是,它要求您的数据采用一种可以作为字节列表处理的格式,如果您处理多维数据,这可能会相当痛苦。