让我们考虑一下文档中的以下示例:import asyncio
async def factorial(name, number):
f = 1
for i in range(2, number+1):
print("Task %s: Compute factorial(%s)..." % (name, i))
await asyncio.sleep(1)
f *= i
print("Task %s: factorial(%s) = %s" % (name, number, f))
loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.gather(
factorial("A", 2),
factorial("B", 3),
factorial("C", 4),
))
loop.close()
收集功能在模块中如下所示:
^{pr2}$
它工作得很好,但是对于我的实际问题,我需要传递的聚集函数不是带有硬编码参数的多个函数,而是某种形式的元组理解来创建多个函数。在
我试过了:loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.gather(
[factorial(str(g),g) for g in range(3)]
))
loop.close()
但它不起作用。有人知道如何使用聚集函数来处理程序化创建的函数列表吗?在
需要说明的是:gather函数不是我定义的,所以我不能从它的定义中删除*并简单地传递这样的参数列表。我需要“打开”清单,但我不知道怎么做。在