| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> python面试题汇总 -> 正文阅读 |
|
[Python知识库]python面试题汇总 |
1、python的GIL GIL的全称是 Global Interpreter Lock,全局解释器锁。 在CPython (CPython是用C语言实现Python解释器,JPython是用Java实现Python解释器)中,在解释器解释执行任何 Python 代码时,都需要先获得这把锁才行。在 I/O 操作时会释放这把锁。在计算操作(没有 I/O 操作),解释器会每隔 100 次操作就释放这把锁,让别的线程有机会执行。就因为GIL的存在,让python的多线程是假的多线程。 2、python中的内存管理 (1)Python内存由Python私有堆空间管理。所有Python对象和数据结构都位于私有堆中。程序员无权访问此私有堆,解释器负责处理此私有堆。 (2)Python对象的Python堆空间分配由Python内存管理器完成。核心API提供了一些程序员编写代码的工具。 (3)Python还有一个内置的垃圾收集器,它可以回收所有未使用的内存并释放内存并使其可用于堆空间。 3、进程、线程、携程 进程是系统资源分配的最小单位。使用 threading 库 线程是程序执行的最小单位。使用 multiprocess 库 协程又称为微线程,是比线程更小的执行单位。因为它自带CPU的上下文,这样只要在合适的时机,我们可以把一个协程切换到另一个协程。使用 yield 关键字 线程切换从系统层面远不止保存和恢复CPU上下文这么简单。操作系统为了程序运行的高效性,每个线程都有自己缓存Cache等等数据,操作系统还会帮你做这些数据的恢复操作,所以线程的切换非常耗性能。但是协程的切换只是单纯地操作CPU的上下文,所以一秒钟切换个上百万次系统都抗的住。 4、装饰器 装饰器本质上是一个嵌套函数(就是一个闭包),它接受被装饰的函数(func)作为参数,并返回一个包装过的函数。这样我们可以在不改变被装饰函数的代码的情况下给被装饰函数添加新的功能。 持续更新…… |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/16 2:40:56- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |