我正在辩论是在每个文件中包含一次loop = asyncio.get_event_loop()
行还是在事件循环中每次需要处理loop = asyncio.get_event_loop()
时写一次whereDoesntHave()
,所以遍历整个文件的各种方法需要多次使用创建任务。
我的同事争辩说,在课堂之外拥有全球化人才是不好的风格。但是,我对使用此get_event_loop方法的开销(无论多么小)以及每个方法中仅多余的代码行浪费CPU周期感到不满意。
哪种方法更好?
答案 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,该功能稍慢一些,但仍然不是我打赌的任何用户代码的瓶颈。