2020 2 12 Python學習計畫

2022-08-12 03:18:22 字數 1378 閱讀 9212

什麼叫「多工」呢?簡單地說,就是作業系統可以同時執行多個任務。打個比方,你一邊在用瀏覽器上網,一邊在聽***,一邊在用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和任務4又不能同時執行,所以,多程序和多執行緒的程式的複雜度要遠遠高於我們前面寫的單程序單執行緒的程式。

python既支援多程序,又支援多執行緒,我們會討論如何編寫這兩種多工程式。

執行緒是最小的執行單元,而程序由至少乙個執行緒組成。如何排程程序和執行緒,完全由作業系統決定,程式自己不能決定什麼時候執行,執行多長時間。

多程序和多執行緒的程式涉及到同步、資料共享的問題,編寫起來更複雜。

機器學習損失函式彙總 2020 2 12

損失函式 loss function 是用來估量模型的 值 f x 與真實值 y 的不一致程度,從而衡量模型 的好壞。它是乙個非負實值函式,通常使用 l y,f x 來表示,損失函式越小,模型的魯棒性就越好。常用損失函式 常見的損失誤差主要有以下幾種 一 0 1損失函式 zero one loss ...

機器學習損失函式彙總 2020 2 12

損失函式 loss function 是用來估量模型的 值 f x 與真實值 y 的不一致程度,從而衡量模型 的好壞。它是乙個非負實值函式,通常使用 l y,f x 來表示,損失函式越小,模型的魯棒性就越好。常用損失函式 常見的損失誤差主要有以下幾種 一 0 1損失函式 zero one loss ...

學習 Python學習(一) Python問答

一.為什麼要使用python?python的主要特點有 1 軟體質量,python 具有很強的可讀性,因此在重用和維護方面就比較方便 2 編碼效率,python沒有編譯和鏈結庫的過程 3 程式移植性,不做任何修改,python可執行在windows和linux系統 4 豐富的支撐庫,python既可...