2017-05-18 78 views
3

我是Python的新手。我用asyncio编写了一个简单的报废程序。这里是我的代码片段python3 - 从异步方法获取结果

loop = asyncio.get_event_loop() 
task = loop.create_task(conSpi.parse(arguments.url)) 
value = loop.run_until_complete(asyncio.wait([task])) 
loop.close() 

我想打印导致value.Rather印刷变量的 正在返回值,它打印像这样

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

`

我如何获得只有结果,并没有得到休息打印?

回答

4

最简单的方法是编写

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 
+0

这工作谢谢,@Sam :) –

+0

我刚刚1个任务 –