Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python aws lambda多处理中传递大量内存_Python_Amazon Web Services_Aws Lambda_Multiprocessing - Fatal编程技术网

如何在python aws lambda多处理中传递大量内存

如何在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不支持进程的共

我一直在尝试在aws lambda中使用并行处理,每个工作人员都成功地执行了他们的工作,但是我正在努力将所有内容返回到原始lambda_处理程序(下面是基本代码结构)。我尝试使用multiprocessing.Pipe,但由于返回的对象大于32MB,因此它就崩溃了(特别是以静默的方式,这使得在lambda中调试非常困难。)我也尝试过使用multiprocessing.Manager,但是这导致内存使用量超过10GB(实际上总共使用了2GB)多处理。队列不是一个选项,因为lambda不支持进程的共享内存。让每个工作线程在完成时写入S3,然后在主线程中读取S3(但这是可行的)会让人感觉非常不舒服。有没有合适的方法来做到这一点

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,但它将相当昂贵。