Python多处理池星图函数给出了一个内存错误

Python多处理池星图函数给出了一个内存错误,python,parallel-processing,multiprocessing,slurm,Python,Parallel Processing,Multiprocessing,Slurm,我对python的多处理比较陌生,这里我想使用多处理来加速一些计算。我基本上只是尝试使用multiprocessing.Pool()将一些进程分组在一起,然后使用Pool.starmap(),因为我编写的辅助函数需要多个参数。下面是我的脚本中绘制错误的重要部分: def worker(return_shape, det, l1, l2, iterate): calculation = np.zeros(return_shape) for combo in iterat

我对python的多处理比较陌生,这里我想使用多处理来加速一些计算。我基本上只是尝试使用
multiprocessing.Pool()
将一些进程分组在一起,然后使用
Pool.starmap()
,因为我编写的辅助函数需要多个参数。下面是我的脚本中绘制错误的重要部分:

def worker(return_shape, det, l1, l2, iterate):
    
    calculation = np.zeros(return_shape)

    for combo in iterate:
        calculation[combo[0], combo[1], combo[2]] += np.histogram2d(l1[:, det, combo[1]], l2[:, combo[0], combo[2]], [np.arange(-0.5, 2, 1), np.arange(-0.5, 2, 1)])[0]

    return calculation


# these will be populated with data
covListP = np.zeros((int(1e5), 48, 50))
covListN = np.zeros((int(1e5), 48, 50))

combinations = [(i, j, k) for i, j, k in itertools.product(range(48), range(50),range(50))]

args = [((48, 50, 50, 2, 2), job, list1, list2, combinations) for job in range(cpu_count)]
pool = multiprocessing.Pool(processes=cpu_count)
worker_out = pool.starmap(worker, args)
我收到的错误消息如下:

File "corrOptions.py", line 109, in <module>
    fameCorr.fameCorr(FOLDER, CHUNK_SIZE, PATH, BN, BP, SYSNAME, SYSTYPE, ERG_THRESHOLD, TIME_UP_THRESHOLD, KINCUT_MODE, KINCUT_MIN, KINCUT_MAX, ADVANCED_MODES)
  File "/eoins/fame/corrFAME/fameCorr_v4.py", line 214, in fameCorr
    worker_out = pool.starmap(worker, args)
  File "/sw/arcts/centos7/python3.7-anaconda/2020.02/lib/python3.7/multiprocessing/pool.py", line 276, in starmap
    return self._map_async(func, iterable, starmapstar, chunksize).get()
  File "/sw/arcts/centos7/python3.7-anaconda/2020.02/lib/python3.7/multiprocessing/pool.py", line 657, in get
    raise self._value
  File "/sw/arcts/centos7/python3.7-anaconda/2020.02/lib/python3.7/multiprocessing/pool.py", line 431, in _handle_tasks
    put(task)
  File "/sw/arcts/centos7/python3.7-anaconda/2020.02/lib/python3.7/multiprocessing/connection.py", line 206, in send
    self._send_bytes(_ForkingPickler.dumps(obj))
  File "/sw/arcts/centos7/python3.7-anaconda/2020.02/lib/python3.7/multiprocessing/connection.py", line 393, in _send_bytes
    header = struct.pack("!i", n)
struct.error: 'i' format requires -2147483648 <= number <= 2147483647

文件“corrOptions.py”,第109行,在
fameCorr.fameCorr(文件夹、区块大小、路径、BN、BP、系统名、系统类型、ERG\u阈值、时间\u上限\u阈值、近切模式、近切最小值、近切最大值、高级模式)
文件“/eoins/fame/CORRAME/fameCorr_v4.py”,第214行,在fameCorr中
worker\u out=pool.starmap(worker,args)
文件“/sw/arcts/centos7/python3.7-anaconda/2020.02/lib/python3.7/multiprocessing/pool.py”,第276行,在星图中
返回self.\u map\u async(func,iterable,starmapstar,chunksize).get()
get中的文件“/sw/arcts/centos7/python3.7-anaconda/2020.02/lib/python3.7/multiprocessing/pool.py”,第657行
提升自我价值
文件“/sw/arcts/centos7/python3.7-anaconda/2020.02/lib/python3.7/multiprocessing/pool.py”,第431行,在任务处理中
放置(任务)
文件“/sw/arcts/centos7/python3.7-anaconda/2020.02/lib/python3.7/multiprocessing/connection.py”,第206行,在send中
self.\u发送\u字节(\u ForkingPickler.dumps(obj))
文件“/sw/arcts/centos7/python3.7-anaconda/2020.02/lib/python3.7/multiprocessing/connection.py”,第393行,以字节为单位
header=struct.pack(“!i”,n)
struct.error:“i”格式需要-2147483648