[英]return a list from asyncio function python
我有这段代码用于使用 asyncio 抓取打印机网页:
def get_toner(url,loop):
loop.run_in_executor(executor,scraper,url)
def scraper(url):
#function for scraping return % of toner
loop = asyncio.get_event_loop()
def main():
for stampante in lista_totale:
get_toner(stampante,loop=loop)
lista_verificati.append(loop.run_until_complete(asyncio.gather(*asyncio.all_tasks(loop))))
print (lista_verificati)
if __name__ == "__main__":
main()
我的意图是创建一个列表以在循环结束时使用。 但我无法打印完整列表,代码仅在 function 启动后立即打印空列表。
我读过这个:
asyncio-collecting-results-from-an-async-function-in-an-executor
我用 loop.shutdown_asyncgens() 找到了解决方案:
try:
loop.run_until_complete(asyncio.gather(*asyncio.all_tasks(loop)))
finally:
loop.run_until_complete(loop.shutdown_asyncgens())
executor.shutdown(wait=True)
loop.close()
print (lista_verificati)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.