【问题标题】:python3 -Get result from async methodpython3 - 从异步方法获取结果
【发布时间】:2017-05-18 13:02:19
【问题描述】:

我是 Python 的新手。我使用 asyncio 编写了一个简单的报废程序。这是我的代码sn-ps

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

我想打印返回值的结果。而是打印变量的 值,它会打印类似这样的内容

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

`

我怎样才能只得到结果而不打印其余部分?

【问题讨论】:

    标签: python async-await python-asyncio python-3.6


    【解决方案1】:

    最简单的方法是写

    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
    

    【讨论】:

      猜你喜欢
      • 2014-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-27
      • 1970-01-01
      • 1970-01-01
      • 2015-10-21
      • 1970-01-01
      相关资源
      最近更新 更多