在下面的代碼中返回異步值之前是否需要loop.close()
?如何看待和處理事件循環?
import asyncio
async def request_url(url):
return url
def fetch_urls(x):
loop = asyncio.get_event_loop()
return loop.run_until_complete(asyncio.gather(*[request_url(url) for url in x]))
也就是說,應該fetch_urls
是這樣的,而不是?:
def fetch_urls(x):
loop = asyncio.get_event_loop()
results = loop.run_until_complete(asyncio.gather(*[request_url(url) for url in x]))
loop.close()
return results
如果需要loop.close()
,那麼如何才能fetch_urls
再次在不提高例外叫:RuntimeError: Event loop is closed
?
A previous post指出關閉循環並開始新循環是一種很好的做法,但它並未指定如何打開新循環?
爲了完整起見,你可以開始通話'ASYNCIO一個新的事件循環。 new_event_loop()'。 – dirn