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

歡迎訪問 生活随笔!

生活随笔

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

python

python并发编程调优_Python并发编程-并发解决方案概述

發(fā)布時間:2025/3/19 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python并发编程调优_Python并发编程-并发解决方案概述 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Python并發(fā)編程-并發(fā)解決方案概述

作者:尹正杰

版權(quán)聲明:原創(chuàng)作品,謝絕轉(zhuǎn)載!否則將追究法律責任。

一.并發(fā)和并行區(qū)別

1>.并行(parallel)

同時做某些事,可以互不干擾的同一個時刻做幾件事。

2>.并發(fā)(concurrency)

也是同時做某些事,但是強調(diào),一個時間段內(nèi)有多少事情要處理。

3>.舉例

高速公路的車道,雙向4車道,所有車輛(數(shù)據(jù))可以互不干擾的在自己的車道上行駛(傳輸)。

在同一時刻,每條車道上可能同時又車輛在跑,是同時發(fā)生的概念,這是并行。

在一段時間內(nèi),又這么多車要通過,這是并發(fā)。

二.并發(fā)的常見解決方案

"食堂打飯模型":

中午12點,開飯啦,大家都涌向食堂,這就是并發(fā)。如果人很多,就是高并發(fā)。

1>.隊列,緩沖區(qū)

假設(shè)只有一個狀況,陸續(xù)涌入食堂的人,排隊大財是比較好的方式。

所以,排隊(隊列)是一種天然解決并發(fā)的辦法。

排隊就是把人排成隊列,先進先出,解決了資源使用的問題。

排成的隊列,其實就是一個緩沖地帶,就是緩沖區(qū)。

假設(shè)女生優(yōu)先,每次都從這個隊伍中優(yōu)先選出女生來打飯,這就是優(yōu)先隊列。

例如Queue模塊的類Queue,LifoQueue,PriorityQueue(小頂堆實現(xiàn))。

2>.爭搶

只開一個這狀況,有可能沒有秩序,也就是誰擠進去就給誰打飯。

擠到窗口的人占據(jù)窗口,直到打到飯菜離開。

其他人繼續(xù)爭搶,會有一個人占據(jù)著窗口,可以視為鎖定窗口,窗口就不能為其他人提供服務(wù)了。這就是一種鎖機制。

誰搶到資源就上鎖,排他性的獨占鎖,其他人只能等候。

爭搶也是一種高并發(fā)解決方案,但是,這樣可能不好,因為有可能有人很長時間搶不到。

3>.預(yù)處理

其實排隊不是問題,就算2萬人拍成一隊等吃飯,如果能10分鐘搞定也行。問題就是并處并發(fā)的速度太慢了。

經(jīng)過分析發(fā)現(xiàn),本食堂主要是打菜等候時間太長,因為每個人都是現(xiàn)場點菜現(xiàn)做。

食堂可以提前統(tǒng)計大多數(shù)人最愛吃的菜品,將最愛吃的80%的熱門菜,提前做好,保證供應(yīng),20%的冷門菜,現(xiàn)做。

這樣大多數(shù)人,就算不排隊采用爭搶的方式鎖定窗口,也很快達到飯菜走了,快速釋放窗口。

這是以中國提前加載用戶需要的數(shù)據(jù)的思路,預(yù)處理思想,緩存常用。

4>.并行

成百上千人同時來吃飯,一個隊伍搞不定的,多開打飯窗口形成多個隊列,如同開多個車道一樣,并行打菜。

開窗口就得擴大食堂,得多古人再窗口提供服務(wù),造成成本上升。高速公路的多車道是并行方案,多車道提高了通信效率,但是也意味著建造維護成本也高了。

日常可以通過購買更多服務(wù)器,或多開進程,線程實現(xiàn)并行處理,來解決并發(fā)問題。

注意這些都是水平擴展的思想。并行是解決并發(fā)手段之一。

溫馨提示:

如果線程在單CPU上處理,就不是真并行了。

但是,現(xiàn)在多數(shù)服務(wù)器都是多CPU的,至少也是單顆多核CPU,服務(wù)的部署往往是多機的,分布式的,這都是并行處理。

5>.提速

提高單個窗口的打飯速度,也是解決并發(fā)的方式。

打飯人員提高工作技能,或為單個窗口配更多的服務(wù)人員,都是提速的辦法。

提高單個CPU性能,或單個服務(wù)器安裝更多CPU。

這是一種垂直擴展思想。

6>.消息中間件

在北京的上地,西二旗地鐵站外九曲回腸的走廊,緩沖人流,進去之后再多口安檢進站。

常見的消息中間件又RabbitMQ,ActiveMQ(Apache),RocketMQ(阿里),kafka(Apache)等。

當然海域哦其它手段解決并發(fā)問題,但是已經(jīng)例舉出了常用的解決方案,一般來說不同的場景用不同的策略,而策略可能是多種方式的優(yōu)化組合。

例如開食堂(多地),也可以把食堂建設(shè)到宿舍生活區(qū)(就近原則),所以說,技術(shù)來源于生活。

總結(jié)

以上是生活随笔為你收集整理的python并发编程调优_Python并发编程-并发解决方案概述的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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