-
【Python面試真題】- 什么是GIL?
【Python面試真題】- 什么是GIL? 什么是GIL(Global Interpreter Lock)全局解釋器鎖? 簡單地說就是: 每一個interpreter進程,只能同時僅有一個線程來執行, 獲得相關的鎖, 存取相關的資源. 那么很容易就會發現,如果一個interpreter進程只能有一個線程來執行, 多線程的并發則成為不可能, 即使這幾個線程之間不…
-
史上最全 Python 面向對象編程
轉自:浪子燕青 http://www.langzi.fun/Python面向對象編程.html 面向對象編程和函數式編程(面向過程編程)都是程序設計的方法,不過稍有區別。 面向過程編程: 在多函數程序中,許多重要的數據被放置在全局數據區,這樣它們可以被所有的函數訪問。每個函數都可以具有它們自己的局部數據,將某些功能代碼封裝到函數中,日后便無需重復編寫,僅調用函數即可。從代碼的組織形式來看就是根據業務邏輯從上到下壘代碼 。 面向對象編程: 面向對象編程中,將函數和變量進一步封裝成類,類才是程序的基…
-
【Python面試真題】- 你在github上都fork過哪些python庫,列舉一下你經常使用的,每個庫用一句話描述下其功能?
http://rogerdudler.github.io/git-guide/index.zh.html #關于git簡明指南 http://www.zhihu.com/question/20070065 …
-
【Python面試真題】- 調試python代碼的方法有哪些?
【Python面試真題】- 調試Python代碼的方法有哪些? 1、具體IDE都有調試,比如:IDLE, Eclipse+Pydev都可以設置斷點調試。 2、pdb模塊也可以做調試。 3、還有PyChecker和Pylint 4、PyChecker是一個Python代碼的靜態分析工具,它可以幫助查找Python代碼的bug, 會對代碼的復雜度和格式提出警告 &…
-
【Python面試真題】- 迭代器和生成器的區別
【Python面試真題】- 迭代器和生成器的區別 1)迭代器是一個更抽象的概念,任何對象,如果它的類有next方法和iter方法返回自己本身。對于string、list、dict、tuple等這類容器對象,使用for循環遍歷是很方便的。在后臺for語句對容器對象調用iter()函數,iter()是Python的內置函數。iter()會返回一個定義了next()方法的迭代器對象,它在容器中逐個訪問容器內元素,next()也是Python的內置函數。在沒有后續元素時,next()會拋出一個StopI…
-
【Python面試真題】- 簡單談下GIL -Global Interpreter Lock(全局解釋器鎖)
【Python面試真題】- 簡單談下GIL -Global Interpreter Lock(全局解釋器鎖) Python代碼的執行由Python 虛擬機(也叫解釋器主循環,CPython版本)來控制,Python 在設計之初就考慮到要在解釋器的主循環中,同時只有一個線程在執行,即在任意時刻,只有一個線程在解釋器中運行。對Python 虛擬機的訪問由全局解釋器鎖(GIL)來控制,正是這個鎖能保證同一時刻只有一個線程在運行。
-
【Python面試真題】- Python是如何進行內存管理的?
【Python面試真題】- Python是如何進行內存管理的? 答:從三個方面來說,一對象的引用計數機制,二垃圾回收機制,三內存池機制 一、對象的引用計數機制 Python內部使用引用計數,來保持追蹤內存中的對象,所有對象都有引用計數。 引用計數增加的情況: 1,一個對象分配一個新名稱 2,將其放入一個容器中(如列表、元組或字典) 引用計數減少的情況: 1,使用del語句對對象別名顯示的銷毀 2,引用超出作用域或被重新賦值 sys.getrefcount( )函數可以獲得對象的當前引用計數 多數…
-
【Python面試真題】- Django 本身提供了 runserver,為什么不能用來部署?
【Python面試真題】- Django 本身提供了 runserver,為什么不能用來部署? runserver 方法是調試 Django 時經常用到的運行方式,它使用 Django 自帶的 WSGI Server 運行,主要在測試和開發中使用,并且 runserver 開啟的方式也是單進程 。 uWSGI 是一個 Web 服務器,它實現了 WSGI 協議、uwsgi、http 等協議。注意 uwsgi 是一種通信協議,而 uWSGI 是實現 uwsgi 協議和 WSGI 協議的 …
-
【Python面試真題】- 如何提高python的運行效率 ?
【Python面試真題】- 如何提高Python的運行效率 ? 使用生成器;關鍵代碼使用外部功能包(Cython,pylnlne,pypy,pyrex);針對循環的優化--盡量避免在循環中訪問變量的屬性
-
【Python面試真題】- 寫爬蟲是用多進程好?還是多線程好? 為什么?
【Python面試真題】- 寫爬蟲是用多進程好?還是多線程好? 為什么? IO密集型代碼(文件處理、網絡爬蟲等),多線程能夠有效提升效率(單線程下有IO操作會進行IO等待,造成不必要的時間浪費,而開啟多線程能在線程A等待時,自動切換到線程B,可以不浪費CPU的資源,從而能提升程序執行效率)。在實際的數據采集過程中,既考慮網速和響應的問題,也需要考慮自身機器的硬件情況,來設置多進程或多線程