<label id="jgr5k"></label>
    <legend id="jgr5k"><track id="jgr5k"></track></legend>

    <sub id="jgr5k"></sub>
  1. <u id="jgr5k"></u>
      久草国产视频,91资源总站,在线免费看AV,丁香婷婷社区,久久精品99久久久久久久久,色天使av,无码探花,香蕉av在线
      您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號安全和更好的產(chǎn)品體驗,強烈建議使用更快更安全的瀏覽器
      此為臨時鏈接,僅用于文章預覽,將在時失效
      人工智能開發(fā)者 正文
      發(fā)私信給skura
      發(fā)送

      0

      如何利用并發(fā)性加速你的python程序(一):相關(guān)概念

      本文作者: skura 2019-01-31 18:48
      導語:并發(fā)、并行、CPU綁定、I/O綁定

      雷鋒網(wǎng) AI 科技評論按,作為目前最流行的編程語言之一,python 在人工智能相關(guān)的領(lǐng)域備受青睞。在編碼時,代碼的運行時間是我們需要考慮的重要因素之一。如何加快程序運行的速度?這是很多開發(fā)者經(jīng)常會思考的問題。

      工程師 Jim Anderson 分享了他的經(jīng)驗,他寫了一篇關(guān)于「通過并發(fā)性加快 python 程序的速度」的文章。Jim 有多年的編程經(jīng)驗,并且使用過各種編程語言。他曾做過嵌入式系統(tǒng)相關(guān)的工作,開發(fā)過分布式系統(tǒng),并且參加過許多會議。

      如果你聽過很多關(guān)于 asyncio 被添加到 python 的討論,但是好奇它與其他并發(fā)方法相比怎么樣,或者你很好奇什么是并發(fā),以及它如何加速你的程序,那么你需要看下 Jim Anderson 的這篇文章,雷鋒網(wǎng)編譯整理。

      在本文中,你將了解以下內(nèi)容:

      • 什么是并發(fā)?

      • 什么是并行?

      • 一些 python 并發(fā)方法的比較,包括線程、異步和多進程

      • 在程序中何時使用并發(fā)性以及使用哪個模塊

      本文假設(shè)讀者對 python 有一個基本的了解,并且使用 python3.6 及以上版來運行示例。你可以從 Real python GitHub repo 下載示例。

      什么是并發(fā)?

      并發(fā)這個詞在字典里面定義是「同時發(fā)生」。在 python 中,同時發(fā)生的事情由線程、任務(wù)、進程調(diào)用,但在高層,它們都是指按順序運行的一系列指令。

      我喜歡把它們看作是不同的思維方式。它們都可以在特定的點上停止,此時,正在處理它們的 CPU 或大腦可以切換到其它的點上。每件事的狀態(tài)都會被保存,這樣它就可以在中斷的地方重新啟動。

      你可能想知道為什么 python 對相同的概念使用不同的詞。事實證明,只有從宏觀意義上看線程、任務(wù)和進程時,它們才是相同的。一旦你開始深入了解細節(jié),它們都代表著一些稍微不同的東西。隨著示例的不斷深入,你將看到更多不同之處。

      你必須小心謹慎,因為當你深入到細節(jié)的時候,實際上只有多進程在同一時間運行著多個任務(wù)。線程和異步都在單個處理器上運行,因此一次只能處理一個任務(wù)。他們只是聰明地找到方法輪流加速整個過程。即使它們不同時運行不同的程序,我們?nèi)匀环Q之為并發(fā)。

      線程或任務(wù)輪流執(zhí)行的方式是線程和異步之間的巨大區(qū)別。在線程中,操作系統(tǒng)實際上知道每個線程,并且可以隨時中斷它以開始運行不同的線程。這被稱為先占式多工法(pre-emptive multitasking),因為操作系統(tǒng)可以對線程進行切換。雷鋒網(wǎng)

      先占式多工法(pre-emptive multitasking)很方便,因為線程中的代碼不需要做任何事情來進行切換。但它也是困難的,因為「在任何時候」都可能需要進行任務(wù)切換。這種轉(zhuǎn)換可以發(fā)生在單個 python 語句的中間,甚至是像 x=x+1 這樣的簡單語句。

      另一方面,asyncio 使用協(xié)同多任務(wù)處理。這些任務(wù)必須通過宣布它們何時準備好被關(guān)閉來協(xié)同合作。這意味著要實現(xiàn)這一點,任務(wù)中的代碼必須稍微更改才能實現(xiàn)這一點。

      提前做這些額外的工作的好處是,你總是知道你的任務(wù)將在哪里被切換。除非該語句被標記,否則任務(wù)不會在 python 語句的中間被切換。接下來你將看到如何簡化設(shè)計的各個部分。

      什么是并行?

      到目前為止,你已經(jīng)研究了在單個處理器上發(fā)生的并發(fā)。那么對于你的新筆記本電腦上的那么多 CPU 核會怎么樣呢?你如何利用它們?答案就是多進程。

      通過多進程,python 創(chuàng)建了新的進程。這里的一個進程可以被看作是一個完全不同的程序,盡管從技術(shù)上講,它們通常被定義為一個資源的集合,其中的資源包括內(nèi)存、文件句柄和類似的東西。每個進程都在自己的 python 解釋器中運行。

      因為它們是不同的進程,所以在多進程中的每一個進程都可以在不同的核上運行。在不同的核心上運行意味著它們實際上可以同時運行,這太棒了。這樣做會產(chǎn)生一些復雜的情況,但是在大多數(shù)情況下,python 都能很好地平衡它們。

      并發(fā)何時有用?

      并發(fā)性可以對兩種類型的問題產(chǎn)生很大的影響。這通常稱為 CPU 綁定和 I/O 綁定。

      I/O 綁定問題會導致程序運行速度減慢,因為它常常需要等待來自某些外部資源的輸入/輸出(I/O)。當你的程序處理比你的 CPU 慢得多的東西時,這種情況經(jīng)常發(fā)生。

      比你的 CPU 慢的事情很多,但謝天謝地,它們中間的大多數(shù)都不會與你的程序有關(guān)聯(lián)。你的程序最常與之交互的緩慢的事情是文件系統(tǒng)和網(wǎng)絡(luò)連接。

      讓我們看看它們是什么樣子的:

      如何利用并發(fā)性加速你的python程序(一):相關(guān)概念

      在上面的示意圖中,藍色框顯示程序工作的時間,紅色框顯示等待 I/O 操作完成的時間。這個圖并不是按比例繪制的,因為 Internet 上的請求時間可能比 CPU 指令長幾個數(shù)量級,所以你的程序最終可能會花費大部分時間等待操作完成。這是你的瀏覽器在大多數(shù)時間里所做的事情。

      另一方面,有一些程序可以在不與網(wǎng)絡(luò)通信或不訪問文件的情況下進行重要的計算。這些是 CPU 綁定的程序,因為限制程序速度的資源是 CPU,而不是網(wǎng)絡(luò)或文件系統(tǒng)。

      以下是 CPU 綁定程序的示意圖:

      如何利用并發(fā)性加速你的python程序(一):相關(guān)概念

      當你完成下面部分中的示例時,你將看到不同形式的并發(fā)在 CPU 綁定的程序和 I/O 綁定的程序中工作得更好或更差。向程序添加并發(fā)性會增加額外的代碼,增大復雜性,因此你需要確定潛在的加速是否值得付出這些代價。看完本文,你應(yīng)該有足夠的信息來開始做這個決定。

      關(guān)于概念的介紹就到這里啦,下面的文章中,你將看到 I/O 綁定程序相關(guān)的內(nèi)容,之后,你將看到一些處理 CPU 綁定程序的代碼。

      接下來的部分請查看:

      如何利用并發(fā)性加速你的python程序(二):I/O 綁定程序加速

      如何利用并發(fā)性加速你的python程序(三):CPU 綁定程序加速

      via:http://www.35crmo.cc/news/201901/JfoLltRClm3bZzuB.html?type=preview

      雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。

      如何利用并發(fā)性加速你的python程序(一):相關(guān)概念

      分享:
      相關(guān)文章
      當月熱門文章
      最新文章
      請?zhí)顚懮暾埲速Y料
      姓名
      電話
      郵箱
      微信號
      作品鏈接
      個人簡介
      為了您的賬戶安全,請驗證郵箱
      您的郵箱還未驗證,完成可獲20積分喲!
      請驗證您的郵箱
      立即驗證
      完善賬號信息
      您的賬號已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
      立即設(shè)置 以后再說
      主站蜘蛛池模板: 91视频网亚瑟视频| 国内精品视频一区二区三区| 亚洲中文字幕久久精品品| 51精品国产人成在线观看| 亚洲第一二三区日韩国产| 97在线视频人妻无码| 夜夜春夜夜爽| 亚洲色频| 在线天堂最新版资源| 亚洲综合av色婷婷| 青青AV| 成人免费午夜无码视频| 欧美丰满熟妇hdxx| 999精品全免费观看视频| 无码日韩精品一区二区三区免费| 亚洲精品一区| 久久99日韩国产精品久久99| 国产一区丝袜高跟鞋| 亚洲熟少妇在线播放999| 亚洲性网| 最美情侣国语版免费高清视频| 久久久av波多野一区二区| 中文a片| 国产精品人妻一区二区三区| 欧美激情综合色综合啪啪五月| 屏东市| 无码综合网| 久久久久国产一级毛片高清版A| 极品粉嫩小泬无遮挡20p| 国产精品久久人妻无码网站一区| 亚洲成人在线网站| 一本色道av久久精品+网站| 97久久精品人人澡人人爽| 超碰福利导航| 中文字幕日韩精品无码内射| 日韩人妻中文无码一区二区七区| yy19影院| 午夜在线不卡| 骚虎视频在线观看| 好爽~又到高潮了毛片视频| 亚洲综合婷婷|