やったもん勝ち

主にプログラミングのこと。生産性向上の某とかも。

AWS lambdaのpythonで並列実行する方法

普通の並列実行は、こちらを参考にして実装できました。

qiita.com

lambdaで実行するとなると若干修正しました。

import time
from multiprocessing import Process, Pipe

hoge_list = [1, 2, 3, 4]


def wait_and_print(i, *args, **kwargs):
    print(f'start {i}')
    for j in range(i):
        print(f'{i}: {j}')
        time.sleep(1)


def lambda_handler(event, context):
    processes = []
    parent_connections = []
    for hoge in hoge_list:
        parent_conn, child_conn = Pipe()
        parent_connections.append(parent_conn)
        process = Process(target=wait_and_print, args=(hoge, child_conn,))
        processes.append(process)

    for process in processes:
        process.start()

    for process in processes:
        process.join()