日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 多线程为什么鸡肋?

發(fā)布時間:2023/12/2 python 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 多线程为什么鸡肋? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

什么是全局解釋器鎖GIL

Python代碼的執(zhí)行由Python 虛擬機(也叫解釋器主循環(huán),CPython版本)來控制,Python 在設計之初就考慮到要在解釋器的主循環(huán)中,同時只有一個線程在執(zhí)行,即在任意時刻,只有一個線程在解釋器中運行。對Python 虛擬機的訪問由全局解釋器鎖(GIL)來控制,正是這個鎖能保證同一時刻只有一個線程在運行。 在多線程環(huán)境中,Python 虛擬機按以下方式執(zhí)行: 1. 設置GIL
2. 切換到一個線程去運行
3. 運行:
? ??a. 指定數(shù)量的字節(jié)碼指令,或者 b. 線程主動讓出控制(可以調(diào)用time.sleep(0))
4. 把線程設置為睡眠狀態(tài)
5. 解鎖GIL
6. 再次重復以上所有步驟 在調(diào)用外部代碼(如C/C++擴展函數(shù))的時候,GIL 將會被鎖定,直到這個函數(shù)結束為止(由于在這期間沒有Python 的字節(jié)碼被運行,所以不會做線程切換)。

全局解釋器鎖GIL設計理念與限制

GIL的設計簡化了CPython的實現(xiàn),使得對象模型,包括關鍵的內(nèi)建類型如字典,都是隱含可以并發(fā)訪問的。鎖住全局解釋器使得比較容易的實現(xiàn)對多線程的支持,但也損失了多處理器主機的并行計算能力。 但是,不論標準的,還是第三方的擴展模塊,都被設計成在進行密集計算任務是,釋放GIL。 還有,就是在做I/O操作時,GIL總是會被釋放。對所有面向I/O 的(會調(diào)用內(nèi)建的操作系統(tǒng)C 代碼的)程序來說,GIL 會在這個I/O 調(diào)用之前被釋放,以允許其它的線程在這個線程等待I/O 的時候運行。如果是純計算的程序,沒有 I/O 操作,解釋器會每隔 100 次操作就釋放這把鎖,讓別的線程有機會執(zhí)行(這個次數(shù)可以通過 sys.setcheckinterval 來調(diào)整)如果某線程并未使用很多I/O 操作,它會在自己的時間片內(nèi)一直占用處理器(和GIL)。也就是說,I/O 密集型的Python 程序比計算密集型的程序更能充分利用多線程環(huán)境的好處。 下面是Python 2.7.9手冊中對GIL的簡單介紹: The mechanism used by the CPython interpreter to assure that only one thread executes Python bytecode at a time. This simplifies the CPython implementation by making the object model (including critical built-in types such as dict) implicitly safe against concurrent access. Locking the entire interpreter makes it easier for the interpreter to be multi-threaded, at the expense of much of the parallelism afforded by multi-processor machines.
However, some extension modules, either standard or third-party, are designed so as to release the GIL when doing computationally-intensive tasks such as compression or hashing. Also, the GIL is always released when doing I/O.
Past efforts to create a “free-threaded” interpreter (one which locks shared data at a much finer granularity) have not been successful because performance suffered in the common single-processor case. It is believed that overcoming this performance issue would make the implementation much more complicated and therefore costlier to maintain.
從上文中可以看到,針對GIL的問題做的很多改進,如使用更細粒度的鎖機制,在單處理器環(huán)境下反而導致了性能的下降。普遍認為,克服這個性能問題會導致CPython實現(xiàn)更加復雜,因此維護成本更加高昂。

總結

以上是生活随笔為你收集整理的python 多线程为什么鸡肋?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产一区视频在线 | 亚洲视频手机在线 | 欧美成人精品欧美一级乱黄 | 午夜看看 | 香港日本韩国三级网站 | 精品无人区无码乱码毛片国产 | 小镇姑娘国语版在线观看免费 | 黄视频在线免费看 | 台湾swag在线观看 | 亚洲自拍色图 | 都市激情亚洲一区 | 亚洲精品久久久乳夜夜欧美 | 90岁肥老奶奶毛毛外套 | 精品久久久久久久久久 | 一区二区三区伦理片 | av片网| 日韩极品视频 | 日韩黄色一区 | 伦理片一区二区三区 | 久久久青 | 五月婷婷激情五月 | 性高潮久久久久久久久久 | 欧美在线黄色 | 台湾佬中文在线 | 国产一区二区综合 | 99精品综合| 亚洲丝袜在线观看 | 又黄又爽一区二区三区 | 国产一级淫 | 姑娘第5集在线观看免费好剧 | a一级网站 | 国产精选一区 | 一区二区成人网 | a级一级片| 男女激情视频网站 | 欧美 亚洲 另类 偷偷 自拍 | 精品国产乱码久久久久久浪潮 | 国产精品va| 天天插美女| 国产aaa级片 | 亚洲国产精华液网站w | 亚洲aaaaa特级 | 精品人妻无码一区二区三区蜜桃一 | 少妇又色又紧又爽又刺激视频 | 九九热视频在线 | 美女免费av | www.国产91| 亚洲少妇30p | 黄色一级片. | 老色批永久免费网站www | 色综合久久88色综合天天 | 肉丝美足丝袜一区二区三区四 | 视频在线91| 97超碰色| 清冷学长被爆c躁到高潮失禁 | 肉视频在线观看 | 999国产精品视频免费 | 欧美日韩中文字幕视频 | 超碰人人艹 | 日韩一区二区免费播放 | 男受被做哭激烈娇喘gv视频 | 精品国产av色一区二区深夜久久 | 99国产精品久久久久久久久久久 | 男女在线视频 | 成人午夜激情 | 亚洲天堂视频在线观看 | 国产欧美日韩亚洲 | 香蕉国产精品视频 | 女性私密整形视频 | 无码丰满熟妇 | 亚洲色图第一区 | 欧美a免费| 中字幕视频在线永久在线观看免费 | 91精品一区二区三区综合在线爱 | 欧美一区二区不卡视频 | 久久精品视频在线 | 久久精品国产露脸对白 | 久久国产精品免费视频 | 久久精品日 | 少妇精品无码一区二区三区 | 亚洲午夜一区二区 | 天天插天天操天天干 | 久久久久久久久久久久久久久久久久久 | 国产三级三级在线观看 | 中文字幕首页 | 91看片在线看 | 东方伊甸园av在线 | 乳孔很大能进去的av番号 | 亚洲免费久久 | 国产老女人乱淫免费可以 | 成人激情在线观看 | 99re视频这里只有精品 | 国产淫片 | 午夜美女视频 | 免费色播 | 亚洲人成电影一区二区在线 | 国产精品99久久久久久www | 91小视频在线 | 欧美日韩亚洲国产一区 |