2017-05-18 80 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個任務 –