python3 - 从异步方法获得结果

Afr*_*mad 8 python async-await python-asyncio python-3.6

我是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()
Run Code Online (Sandbox Code Playgroud)

我想打印返回值的结果.收集打印变量的值,打印出类似这样的内容

 {<Task finished coro=<ConcurrentSpider.parse() done, 
 defined at /home/afraz/PycharmProjects/the-lab/concurrentspider.py:28> result=3>}
Run Code Online (Sandbox Code Playgroud)

`

我怎样才能得到结果而不打印?

Sam*_*man 15

最简单的方法是写

value = loop.run_until_complete(task)
Run Code Online (Sandbox Code Playgroud)

只有在您想要等待一项任务时才有效.如果您需要多个任务,则需要正确使用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
Run Code Online (Sandbox Code Playgroud)