get_event_loop()调用的开销

时间:2018-10-09 09:19:40

标签: python-asyncio

我正在辩论是在每个文件中包含一次loop = asyncio.get_event_loop()行还是在事件循环中每次需要处理loop = asyncio.get_event_loop()时写一次whereDoesntHave(),所以遍历整个文件的各种方法需要多次使用创建任务。

我的同事争辩说,在课堂之外拥有全球化人才是不好的风格。但是,我对使用此get_event_loop方法的开销(无论多么小)以及每个方法中仅多余的代码行浪费CPU周期感到不满意。

哪种方法更好?

2 个答案:

答案 0 :(得分:3)

除非您实际上可以证明get_event_loop的开销对您的应用程序有负面影响,否则我建议您不要进行微优化。使用get_event_loop可确保您的代码在多个事件循环下运行,这些循环由测试工具或asyncio.run的多次调用定期创建。

如果绝对觉得必须优化对get_event_loop的调用,请至少在构造期间创建一个类并将其存储在实例中。这样一来,您可以避免函数调用,而代码在多个事件循环下仍可运行,至少只要您设计的对象不超过事件循环即可。

答案 1 :(得分:3)

在Python 3.7中,get_event_loop()调用的摊销时间几乎与 C函数调用的时间不相上下,并且比 Python函数调用时间快得多。 / p>

对于Python 3.6,该功能稍慢一些,但仍然不是我打赌的任何用户代码的瓶颈。