python為什么不解除gil 為什么python的GIL問題一直讓人詬病,python社區(qū)卻不解決?
為什么python的GIL問題一直讓人詬病,python社區(qū)卻不解決?吉爾,這把大鎖,今天仍然存在。這是有道理的。首先,我們知道Python是一種解釋性語言,代碼執(zhí)行是在解釋器中執(zhí)行的。解釋性語言不能
為什么python的GIL問題一直讓人詬病,python社區(qū)卻不解決?
吉爾,這把大鎖,今天仍然存在。這是有道理的。首先,我們知道Python是一種解釋性語言,代碼執(zhí)行是在解釋器中執(zhí)行的。解釋性語言不能實現(xiàn)真正的多線程并發(fā)是一個常見的問題。這是先天的。多個線程共享主進程資源。如果線程沒有被鎖定,線程是并發(fā)的,并且多個線程修改共享數(shù)據(jù),就會導(dǎo)致數(shù)據(jù)混淆,這是不可靠的。因為解釋器不知道在哪里修改代碼中的共享數(shù)據(jù),所以它直接鎖定線程。解釋器一次只允許運行一個線程。
當(dāng)然,您可能會說,我只要求解釋器鎖定要修改的共享數(shù)據(jù),這樣多線程就可以真正并行了?事實上,一個大老板在國外做這件事已經(jīng)很久了。測試結(jié)果表明,執(zhí)行效率不如直接鎖定線程。到目前為止,python開發(fā)團隊還沒有針對這個問題提出更好的解決方案。這是解釋性語言的通病。另外,這個問題很難解決。
雖然Gil大鎖的存在影響了多線程,不能實現(xiàn)真正的并發(fā),但我們可以用多進程來解決。
作為一名研究生,除了可以用python寫各種算法之外,還應(yīng)該如何提高自己的python水平?
作為一名研究生,您用Python編寫算法。我認為你想發(fā)展大數(shù)據(jù)和人工智能。
近年來,隨著大數(shù)據(jù)和人工智能的爆炸式發(fā)展,Python變得越來越流行。如果你想提高你的Python水平,我想你可以從以下幾點開始
!Apache spark是一個大數(shù)據(jù)處理框架,計算速度快,使用方便,支持復(fù)雜分析,有可能取代MapReduce。
盡管Python在機器學(xué)習(xí)和人工智能方面有很好的應(yīng)用,但Python有一個很大的缺陷。它不支持分布式計算,但這并不重要。Spark提供了一個優(yōu)秀的Python接口pyspark。有了它,python在分布式計算和流計算方面有了很大的改進。
另外,spark的核心RDD彈性分布式數(shù)據(jù)集與Python中panda的數(shù)據(jù)幀非常相似,可以很容易地相互轉(zhuǎn)換。因此spark賦予Python以分布式方式處理大型數(shù)據(jù)集的能力。
Python有許多強大的web后端框架,如Django、flash等。學(xué)習(xí)這一點可以鞏固Python的基礎(chǔ),并使用Python的高級用法,如裝飾器、類、魔術(shù)方法、數(shù)據(jù)庫等。
您不能總是在一臺機器上使用該型號。您可以在大數(shù)據(jù)框架和網(wǎng)站中部署模型。這要求您了解后端和分布式計算。學(xué)習(xí)這兩個方面,不僅可以提高python的水平,也可以讓你在未來的大數(shù)據(jù)和人工智能領(lǐng)域發(fā)力。