python log python多線程為什么沒有并行?
python多線程為什么沒有并行?1. 什么是吉爾???Gil的全名是global interpreter lock(global interpreter lock),源于Python設(shè)計之初的考慮和
python多線程為什么沒有并行?
1. 什么是吉爾?
??Gil的全名是global interpreter lock(global interpreter lock),源于Python設(shè)計之初的考慮和對數(shù)據(jù)安全的決策。
2. 每個CPU只能同時執(zhí)行一個線程
??事實上,單核CPU下的多線程只是并發(fā),而不是并行。并發(fā)性和并行性是同時處理多個請求的概念。但是并發(fā)和并行之間有區(qū)別。并行意味著兩個或多個事件同時發(fā)生,而并發(fā)意味著兩個或多個事件在同一時間間隔發(fā)生。
百度搜索圈t社區(qū)(www.aiquanti.com)免費視頻教程
這句話是片面的:
Gil lock限制進(jìn)程中的不同線程只能同時占用一個CPU??梢钥闯?,多線程用于處理計算密集型任務(wù)。在Python中,多個線程需要等待對方獲得CPU資源。在這個時候,多線程不能并行,我們真的不具備預(yù)期的多線程能力。
但是,如果執(zhí)行的是Io密集型任務(wù),多個線程之間沒有太多CPU資源爭用,更多的是每個線程都在進(jìn)行Io傳輸和等待,此時,多線程的能力還是可以發(fā)揮出來的。
所以我們不能簡單地說Python的多線程是雞肋,但是它的設(shè)計限制了它的應(yīng)用場景。