该库是library枚举的python端口。
它只会很少被使用
我通常在一个公共位置导入库供每个请求使用,然而,导入这个库会影响应用程序的性能,导致实例启动较慢,这是我关心的问题。
那么,在使用它的函数中以内联方式导入它是否合乎逻辑?
我猜无论如何,它会加载到内存中并增加内存使用率,但是,在使用时以内联方式导入它可能会提高实例的冷启动性能
情况会是这样吗?
发布于 2016-03-01 02:26:13
无论是在实例启动时还是在按需导入时,导入库的实际时间都大致相同,内联在需要它的特定请求中。类似地,库的内存占用在加载后是相同的。
因此,对于实际需要库的请求,这并不重要。
但对于其他请求,它可能很重要,可能很多。
在实例启动时盲目加载所有可能需要的库意味着实例将启动较慢,并且将使用比仅加载触发实例启动的请求所需的库更多的内存。但一旦实例启动,所有后续请求都将受益于最小响应时间-不需要加载额外的代码,而在另一种情况下,一些后续请求的响应时间将增加导入尚未导入的库所需的时间(每个库每个实例生命周期一次)。
有些人会认为在启动时导入所有库的应用程序比按需导入的应用程序更昂贵、启动更慢、更大。其他人会认为它们在性能上更具确定性,这可能对一些应用程序很重要。
按需导入库,特别是很少使用的大型库,提供了一个独特的优势:即使所有库的总内存占用超过实例类型的内存限制,应用程序也可以(至少部分或以降级模式)运行-如果试图在实例启动时加载所有库,这是不可能的。
按需导入的一种变体是延迟加载包含请求处理程序代码的整个文件,请参阅App Engine: Few big scripts or many small ones?这里有一个实际的示例:What determines start up time of dynamic instance and can it vary between weeks if code is same)
https://stackoverflow.com/questions/25256608
复制相似问题