首頁  >  文章  >  後端開發  >  如何來理解python中的進程和執行緒?

如何來理解python中的進程和執行緒?

乌拉乌拉~
乌拉乌拉~原創
2018-08-23 17:41:321474瀏覽

 在以下的文章之中我們來了解什麼是python中的進程和執行緒。了解python進程和執行緒的相關知識,以及python的進程和執行緒在python程式設計之中能起到什麼樣的作用。


什麼叫「多任務」呢?簡單地說,就是作業系統可以同時運行多個任務。打個比方,你一邊在用瀏覽器上網,一邊在聽MP3,一邊在用Word趕作業,這就是多任務,至少同時有3個任務正在運行。還有很多任務悄悄地在後台同時運行著,只是桌面上沒有顯示而已。

現在,多核心CPU已經非常普及了,但是,即使過去的單核心CPU,也可以執行多任務。由於CPU執行程式碼都是順序執行的,那麼,單核心CPU是怎麼執行多任務的呢?

答案就是作業系統輪流讓各個任務交替執行,任務1執行0.01秒,切換到任務2,任務2執行0.01秒,再切換到任務3,執行0.01秒…這樣重複執行下去。表面上看,每個任務都是交替執行的,但是,由於CPU的執行速度實在是太快了,我們感覺就像所有任務都在同時執行一樣。

真正的平行執行多任務只能在多核心CPU上實現,但是,由於任務數量遠遠多於CPU的核心數量,所以,作業系統也會自動把很多任務輪流調度到每個核心上執行。

對作業系統來說,一個任務就是一個進程(Process),例如開啟一個瀏覽器就是啟動一個瀏覽器進程,開啟一個記事本就啟動了一個記事本進程,開啟兩個記事本就啟動了兩個記事本進程,開啟一個Word就啟動了一個Word進程。

有些流程不只同時做一件事,例如Word,它可以同時進行打字、拼字檢查、列印等事情。在一個進程內部,要同時幹多件事,就需要同時運行多個“子任務”,我們把進程內的這些“子任務”稱為線程(Thread)。

由於每個行程至少要做一件事,所以,一個行程至少有一個執行緒。當然,像Word這種複雜的進程可以有多個線程,多個線程可以同時執行,多線程的執行方式和多進程是一樣的,也是由作業系統在多個線程之間快速切換,讓每個線程都短暫地交替運行,看起來就像同時執行一樣。當然,真正地同時執行多執行緒需要多核心CPU才可能實現。

我們前面寫的所有的Python程序,都是執行單任務的進程,也就是只有一個執行緒。如果我們要同時執行多個任務怎麼辦?

有兩種解決方案:

一種是啟動多個進程,每個進程雖然只有一個線程,但多個進程可以一塊執行多個任務。

還有一種方法是啟動一個行程,在一個行程內啟動多個線程,這樣,多個執行緒也可以一塊執行多個任務。

當然還有第三種方法,就是啟動多個進程,每個進程再啟動多個線程,這樣同時執行的任務就更多了,當然這種模型更複雜,實際上很少採用。

總結一下就是,多任務的實作有3種方式:

1.多進程模式;

2.多執行緒模式;

#3 .多行程多執行緒模式。

同時執行多個任務通常各個任務之間並不是沒有關聯的,而是需要相互溝通和協調,有時,任務1必須暫停等待任務2完成後才能繼續執行,有時,任務3和任務4又不能同時執行,所以,多行程和多執行緒的程式的複雜度要遠高於我們前面寫的單一行程單執行緒的程式。

因為複雜度高,調試困難,所以,不是迫不得已,我們也不想寫多任務。但是,有很多時候,沒有多工還真不行。想想在電腦上看電影,就必須由一個線程播放視頻,另一個線程播放音頻,否則,單線程實現的話就只能先把視頻播放完再播放音頻,或者先把音頻播放完再播放視頻,這顯然是不行的。

Python既支援多進程,又支援多執行緒。

以上就是本篇文章所講述的所有內容,這篇文章主要介紹了python中的進程和線程的相關知識,希望你能藉助資料從而理解上述所說的內容。希望我在這片文章所講述的內容能夠對你有幫助,讓你學習python更加輕鬆。

更多相關知識,請造訪php中文網Python教學欄位。

以上是如何來理解python中的進程和執行緒?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn