为什么在aiohttp中使用显式循环参数?

时间:2017-02-20 17:01:58

标签: python python-asyncio aiohttp

aiohttp图书馆的documentation州:

  

loop - 用于处理HTTP请求的事件循环。如果param为None,则asyncio.get_event_loop()用于获取默认事件循环,但我们强烈建议在任何地方使用显式循环。 (可选)

可以将loop传递给ClientSession个对象,提供给模块级"模块级"功能等。

我是异步编程概念的新手,你可以向我解释为什么它建议明确地提供循环使用,而不是让对象/函数只是使用默认值?

考虑到一个用途是通过提供我自己的循环模拟使测试更容易,是否有性能原因?

1 个答案:

答案 0 :(得分:1)

原因是可读性而非性能。

显式指定循环将使开发人员更容易查看循环实例的来源,如果需要将自定义循环注入程序,可能会更容易更改循环。

另一个流行的选择是从不指定循环参数,因此总是调用asyncio.get_event_loop()来获取循环实例。

(可以使用多个循环 - 例如在不同的线程中,但这不是常见的用例)