Передать функции аргументы в мультипроцессинге

Рейтинг: 0Ответов: 1Опубликовано: 05.03.2023

Всем привет, может мой вопрос покажется кому-то тупым, но все же. У меня написана функция main, она принимает на вход несколько аргументов, один из них итерируемый из TOKENS, другие - вводные данные. Как мне запуская мультипроцессинг указать эти другие аргументы, кроме итерируемого TOKENS?

План такой - элемент из TOKENS попадает в функцию main, там происходят вычисления, потом берется следующий элемент в этой же функции.

main(TOKENS, a, b, c)
if __name__ == '__main__':
    session = requests.Session()
    with multiprocessing.Pool(multiprocessing.cpu_count()) as pool:
        pool.map(main, TOKENS)

UPD: Решение - functools.partial, спасибо большое @Eri за наводку

main(a, b, c, TOKENS)
    if __name__ == '__main__':
        session = requests.Session()
        with multiprocessing.Pool(multiprocessing.cpu_count()) as pool:
            pool.map(partial(main,a,b,c), TOKENS)

Ответы

▲ 2Принят

Либо через functools.partial

Либо

def main(args):
    TOKEN, a, b, c = *args
    ....

pool.map(main, [(TOKEN, a, b, c) for TOKEN in TOKENS])