我有一个简单的字符串匹配脚本,可以在我的本地 Mac 上有 4 个内核的最多 8 个池工作人员进行多处理测试。但是,具有 8 个内核的 AWS c1.xlarge 上的相同脚本通常会杀死除 2 个工作人员之外的所有工作人员,CPU 仅在 25% 时工作,并且在几轮后以MemoryError
.
我对服务器配置不太熟悉,所以我想知道是否有任何设置需要调整?
池实现如下所示,但似乎不是问题,因为它在本地工作。每个工人会有几千个目标,并且不会超过前五个左右。如有必要,很高兴分享更多代码。
pool = Pool(processes = numProcesses)
totalTargets = len(getTargets('all'))
targetsPerBatch = totalTargets / numProcesses
pool.map_async(runMatch, itertools.izip(itertools.repeat(targetsPerBatch), xrange(0, totalTargets, targetsPerBatch))).get(99999999)
pool.close()
pool.join()