我是Python的新手。我用asyncio编写了一个简单的报废程序。这是我的代码片段
loop = asyncio.get_event_loop()
task = loop.create_task(conSpi.parse(arguments.url))
value = loop.run_until_complete(asyncio.wait([task]))
loop.close()
我想打印返回值的结果。打印变量' s 价值,打印出像这样的东西
{<Task finished coro=<ConcurrentSpider.parse() done,
defined at /home/afraz/PycharmProjects/the-lab/concurrentspider.py:28> result=3>}
`
如何才能获得结果而不打印?
答案 0 :(得分:13)
最简单的方法是编写
value = loop.run_until_complete(task)
只有在您想等待一项任务时才有效。 如果您需要多个任务,则需要正确使用asyncio.wait。 它返回一个包含已完成和待定期货的元组。但是,默认情况下,待处理的期货将为空,因为它等待所有期货完成。
类似
done, pending = loop.run_until_complete(asyncio.wait( tasks))
for future in done:
value = future.result() #may raise an exception if coroutine failed
# do something with value