如何在python aws lambda多处理中传递大量内存
我一直在尝试在aws lambda中使用并行处理,每个工作人员都成功地执行了他们的工作,但是我正在努力将所有内容返回到原始lambda_处理程序(下面是基本代码结构)。我尝试使用multiprocessing.Pipe,但由于返回的对象大于32MB,因此它就崩溃了(特别是以静默的方式,这使得在lambda中调试非常困难。)我也尝试过使用multiprocessing.Manager,但是这导致内存使用量超过10GB(实际上总共使用了2GB)多处理。队列不是一个选项,因为lambda不支持进程的共享内存。让每个工作线程在完成时写入S3,然后在主线程中读取S3(但这是可行的)会让人感觉非常不舒服。有没有合适的方法来做到这一点如何在python aws lambda多处理中传递大量内存,python,amazon-web-services,aws-lambda,multiprocessing,Python,Amazon Web Services,Aws Lambda,Multiprocessing,我一直在尝试在aws lambda中使用并行处理,每个工作人员都成功地执行了他们的工作,但是我正在努力将所有内容返回到原始lambda_处理程序(下面是基本代码结构)。我尝试使用multiprocessing.Pipe,但由于返回的对象大于32MB,因此它就崩溃了(特别是以静默的方式,这使得在lambda中调试非常困难。)我也尝试过使用multiprocessing.Manager,但是这导致内存使用量超过10GB(实际上总共使用了2GB)多处理。队列不是一个选项,因为lambda不支持进程的共
import multiprocessing as mp
def someFunction(someArg):
arr = []
#fill this arr with lots of data
return arr
def lambda_handler(event,context):
processes = []
num_processes = 10
for i in range(num_processes):
p = mp.Process(target=someFunction, args=(someArg,))
p.start()
processes.append(p)
for p in processes:
p.join()
您可以使用内存缓存,如ElastiCache,但它将相当昂贵。