在实际项目中,遇到一个问题,fastapi请求的视图函数中,已经将耗时任务通过BackgroundTasks
放到后台任务去执行,但是还是会超时kill当前线程。因此,简单记录一下。
大约 3 分钟
在实际项目中,遇到一个问题,fastapi请求的视图函数中,已经将耗时任务通过BackgroundTasks
放到后台任务去执行,但是还是会超时kill当前线程。因此,简单记录一下。
很多函数都有自己的很多方法,其中有些方法的功能类似,但是其复杂度有时却大不相同
本节我们将引入一个新模块 timeit
,其功能是来测试一小段 Python
代码的执行速度。
GIL:又叫全局解释器锁,每个线程在执行的过程中都需要先获取GIL,保证同一时刻只有一个线程在运行,目的是解决多线程同时竞争解释器资源而出现的线程安全问题。它并不是python语言的特性,仅仅是由于历史的原因在CPython解释器中难以移除,因为python语言运行环境大部分默认在CPython解释器中。
几乎所有的教程都告诉你 int() 是 python 的内置函数,然而当你看到 int 的定义,发现它竟然是类
class int(object):
pass
简单分析一下python中的垃圾回收机制,主要从三方面阐述:引用计数、标记清除、分代回收。
引用计数是什么?
Python的实现版本有很多,例如Jython底层就是JVM,IronPython的底层是.Net,它们的内存管理千差万别取决于底层的运行时系统。在CPython实现中,堆和栈有各自的职责。
单例模式(Singleton Pattern) 是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场。
if __name__ == '__main__':
asyncio.run(main())