Python3 как asyncio.gather () список частичных функций - PullRequest
0 голосов
/ 21 января 2019

Я пытаюсь создать список сопрограмм, который может быть передан asyncio.gather ()

Однако я хочу присоединить аргументы к этим сопрограммам, когда я добавляю их в список.

Мой текущий метод, показанный ниже, использует functools.partial.К сожалению, asyncio.gather не принимает частичную функцию, что имеет смысл.

Для меня не имеет значения, как найти решение.

Пример кода:

async def test(arg1):
    print(arg1)

statements = []

function = functools.partial(test, "hello world")
statements.append(function)

results = await asyncio.gather(*statements)

Так как мне прикрепить аргументы к функции, чтобы она все еще могла быть передана asyncio.gather?

* РЕДАКТИРОВАТЬ

Кажется, я был довольно глупым.

Мое решение было довольно простым, не используйте functools.partial и просто добавьте сопрограмму прямо в список.

Код:

async def test(arg1):
    print(arg1)

async def main():
    statements = []
    statements.append(test("hello_world"))
    results = await asyncio.gather(*statements)

loop = asyncio.get_event_loop()
loop.run_until_complete(main())

1 Ответ

0 голосов
/ 21 января 2019

Однако я хочу прикрепить аргументы к этим сопрограммам, добавляя их в список.

Вы можете просто вызвать функции сопрограмм с их необходимыми аргументами. В отличие от обычных функций (но похожих на генераторы), вызов функции сопрограммы не начинает ее выполнение, он просто возвращает объект, который может быть использован для последующего выполнения. Этот объект уже захватывает аргументы вызова и может быть добавлен в список, переданный asyncio.gather.

Например:

statements = []

statements.append(test("hello world"))
# ...

results = await asyncio.gather(*statements)
...