代码之家  ›  专栏  ›  技术社区  ›  ilciavo

如何使用大型numpy数组优化Python中的内存分配?

  •  0
  • ilciavo  · 技术社区  · 5 年前

    import numpy as np
    import h5py
    import sys
    
    Ns, N, L, Nz = (40, 80, 3240, 160)
    largeArray = np.zeros((Ns,N, L, Nz), dtype=complex)
    
    for ids in range(Ns):
        for n in range(N):
            for l in range(L):
                #calling a bunch of numerical operations with pybind11 
                #and storing the results into a largeArray
                largeArray[ids, n, l]=ids+n+l*1j
    
    f = h5py.File('myFile.hdf5', 'w')
    f.create_dataset('largeArray', data=largeArray)
    print('content:', largeArray.nbytes)
    print('size:', sys.getsizeof(largeArray))
    

    大数据块必须分配26.5GB,系统报告内存使用量为148GB。我假设内存管理器正在用硬盘交换内存中的数据,对吗?。我正在使用 pybind11 为了包装数值运算,我开始在最外层的循环中将数据分解成块( ids mpi h5py 在里面 parallel

    0 回复  |  直到 5 年前