小编nas*_*nio的帖子

在Python中写入共享内存非常慢

我用python.multiprocessing.sharedctypes.RawArray在多个进程之间共享大型 numpy 数组。我注意到,当这个数组很大(> 1或2 Gb)时,初始化会变得非常慢,读/写也会慢得多(并且读/写时间不可预测,有时非常快,有时非常非常慢)慢的)。

我制作了一个小型示例脚本,它仅使用一个进程,初始化一个共享数组并对其进行多次写入。并测量执行这些操作的时间。

import argparse
import ctypes
import multiprocessing as mp
import multiprocessing.sharedctypes as mpsc
import numpy as np
import time

def main():
    parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
    parser.add_argument('-c', '--block-count', type=int, default=1,
                        help='Number of blocks to write')
    parser.add_argument('-w', '--block-width', type=int, default=20000,
                        help='Block width')
    parser.add_argument('-d', '--block-depth', type=int, default=15000,
                        help='Block depth')
    args = parser.parse_args()
    blocks = args.block_count
    blockwidth = args.block_width
    depth = args.block_depth
    start = time.perf_counter()
    shared_array = mpsc.RawArray(ctypes.c_uint16, blocks*blockwidth*depth)
    finish = time.perf_counter()
    print('Init shared array of size {:.2f} …
Run Code Online (Sandbox Code Playgroud)

python linux performance numpy shared-memory

2
推荐指数
1
解决办法
3098
查看次数

标签 统计

linux ×1

numpy ×1

performance ×1

python ×1

shared-memory ×1