相关疑难解决方法(0)

多处理.RawArray 操作

我读到RawArray可以在进程之间共享而无需复制,并且想了解它在 Python 中是如何实现的。

我在sharedctypes.py中看到, a是从heap.pyRawArray中的a 构造的,然后用 取消。BufferWrapperctypes.memset

BufferWrapper由一个对象组成Arena,该对象本身是由一个mmap(或 Windows 中的 100 个 mmap,请参见heap.py中的第 40 行)构建的

我读到mmap系统调用实际上是在Linux/BSD中用于分配内存的,而Python模块在windows中使用MapViewOfFile 。

mmap那么看起来很方便。它似乎可以直接与mp.pool-

from struct import pack
from mmap import mmap

def pack_into_mmap(idx_nums_tup):

    idx, ints_to_pack = idx_nums_tup
    pack_into(str(len(ints_to_pack)) + 'i', shared_mmap, idx*4*total//2 , *ints_to_pack)


if __name__ == '__main__':

    total = 5 * 10**7
    shared_mmap = mmap(-1, total * 4)
    ints_to_pack = range(total)

    pool = …
Run Code Online (Sandbox Code Playgroud)

ctypes mmap multiprocessing python-3.x

5
推荐指数
1
解决办法
1585
查看次数

标签 统计

ctypes ×1

mmap ×1

multiprocessing ×1

python-3.x ×1