Tech/Python

parallel execute sample

Enrai 2023. 12. 6. 19:36

concurrent.futures

https://docs.python.org/3/library/concurrent.futures.html

ThreadPoolExecutor

지정한 함수를 병렬기동

from concurrent.futures import ThreadPoolExecutor

def parallel_execute(function, args_list, max_workers=20):
    futures = []
    with ThreadPoolExecutor(
        max_workers=max_workers, thread_name_prefix="thread"
    ) as pool:
        for args in args_list:
            future = pool.submit(function, *args)
            futures.append(future)

    return [fut.result() for fut in futures]

사용법

translate_story 함수를 병렬기동하고 싶은 경우, 함수의 파라메터의 배열을 만들어서 넘기면 됨

def translate_story(title, df):
    df['story'] = df['name'].apply(lambda x: translate(x))
    return df

grouped_by_title = df.groupby('title')
args = list(grouped_by_title)

result = parallel_execute(translate_story, args)