更多互联网新鲜资讯、工作奇淫技巧关注原创【飞鱼在浪屿】(日更新)
许多大型软件-如Instagram,YouTube和Dropbox Web应用程序-最初都是Python应用程序。由于Python的易用性和高质量的开源库,因此使用Python构建Web应用程序极其容易。
动机
Python带有自动内存管理(带有垃圾回收),使开发人员无需手动处理未分配的对象。这对于更快地交付功能非常有帮助,但是会使应用程序受到内存管理系统和垃圾收集算法的影响。例如,GC暂停在Java等其他托管内存语言中臭名昭著。
速度可能不是Python应用程序的决定性因素,因为它很少用于对性能敏感的应用程序,但是自动内存管理还有其他更微妙的后果。与CPU / IO绑定相比,标准的无状态Python Web服务器(在CPython上运行)通常可能受内存限制。这是因为每个对象都是在堆上分配的,而大型的开源库(例如numpy)仅通过导入在程序中占用约50mb的空间。因此,运行该应用程序的基础架构成本直接与其内存效率-进而与其内存管理紧密相关。这对于其他动态语言(例如PHP和Ruby)也是如此。
一种更有效地运行Python Web服务器的方法是将应用程序的多个进程打包到单个主机(或Pod)上,然后为每个进程设置内存限制(可能通过cgroups设置),以免妨碍其他进程。当进程开始超过其限制时,它会杀死OOM(内存