我正在考虑是在每个文件中包含一次loop = asyncio.get_event_loop()行,还是在每次需要事件循环句柄时都编写loop = asyncio.get_event_loop(),因此在整个文件中多次包含需要创建任务的各种方法。
我的同事认为,在类之外使用全局变量是一种糟糕的风格。但我并不喜欢浪费CPU周期,因为这个get_event_loop方法的开销很小,而且每个方法中只需要额外的代码行。
哪种方法更好?
发布于 2018-10-10 00:11:30
除非您能实际证明get_event_loop的开销对您的应用程序产生了负面影响,否则我建议您不要进行这种微优化。使用get_event_loop可以确保您的代码在多个事件循环下运行,这些事件循环由测试工具或asyncio.run的多次调用定期创建。
如果您绝对觉得必须优化对get_event_loop的调用,那么至少在构造过程中创建一个类并将其存储在实例中。这样,您就可以避免调用函数,而您的代码在多个事件循环下仍然可以运行,至少只要您的对象不会超过事件循环。
发布于 2018-10-10 23:53:21
在Python3.7中,get_event_loop()调用的分期时间几乎与C函数调用的时间相当,但比Python函数调用时间快得多。
对于Python3.6,这个函数会稍微慢一点,但我敢打赌,对于任何用户代码来说,它仍然不是一个瓶颈。
https://stackoverflow.com/questions/52717478
复制相似问题