天天看點

筆記1:網絡程式設計

網絡通信:網際網路通信使用,目的讓電腦上不同軟體之間通信。

IP位址:分為IP4與IP6

筆記1:網絡程式設計
筆記1:網絡程式設計

IP位址分類:電腦唯一區分号

筆記1:網絡程式設計

端口号:同一個Ip下的不同程式的識别

筆記1:網絡程式設計

程序:運作的程式就叫做程序,知名端口0---1023,動态端口1024--65535。其中網站浏覽預設端口80,ftp端口21

socket套接字:用來完成網絡通信必備的東西。

筆記1:網絡程式設計

通信模型:UDP與TCP,udp可以了解成寫信模式,每封信都需要位址端口等,另外存在不安全性,資料可能丢失。TCP可以了解為打電話的形式,相對就安全很多。TCP還具有逾時重傳,錯誤校驗,流量控制和阻塞管理。

下載下傳檔案

筆記1:網絡程式設計
筆記1:網絡程式設計

時間片輪轉:單核cpu處理多個應用程式,每個程式配置設定極少的時間如0.001s,輪換切換時間極短,人工難以區分,就誤以為一起同時運作了。這裡隻是完成多任務的一種政策。例子:單核CUP運作QQ,切換微信等

并行:真正的多任務,每個程式一個核心cpu。例如:雙核CPU分别運作QQ與微信

并發:假的多任務,cup核數量少于任務數。例如:單核CPU運作QQ與微信

筆記1:網絡程式設計

紅色箭頭表示程式的線程,調用start方法時候,生成新的線程。這時候可以有兩個線程同時執行代碼,由此出現多任務的情況。

筆記1:網絡程式設計

線程的封裝

筆記1:網絡程式設計

全局變量:如果指定固定值不加global,如果指的同一個位址不需要加

筆記1:網絡程式設計

線程傳參

筆記1:網絡程式設計

互斥鎖

筆記1:網絡程式設計

死鎖:銀行家算法

死鎖是一種狀态,在多任務中A任務在等待。B任務也在等待,。。。,N任務也在等待。就造成一種死鎖現象。都在等待解鎖,就造成阻塞,程式永遠卡住。為了避免死鎖出現以下政策:

(1) 添加逾時時間

(2)程式設計時要盡量避免(例如,銀行家算法)等

筆記1:網絡程式設計

銀行家算法核心思想就是将現有的資源配置設定給多個任務,任務執行完解鎖,以此類推完成所有任務。

exe就是二進制檔案,就是一個靜态的程式。将這個程式運作起來就是程序了。程式隻有一個,但是可以包含多個程序,一個程序可以包含多個線程。最簡單的了解,比如微信是一個程式,運作起來以後會使用語音、視訊、網絡、聲霸卡等功能,每個功能是一個程序。這樣看起來程式運作起來就包含多個程序了。程序是作業系統配置設定的機關。

程序的狀态

筆記1:網絡程式設計

程序也可以完成多任務,不過占用資源比較大。線程可以完成多任務,占用資源少。

程序和線程對比

程序是一堆資源的繼承,包括網絡,硬碟,聲霸卡等。程序是資源配置設定機關。一個程序裡面至少一個主線程。程序可以了解為工廠上面的流水線,線程就是流水線上的勞工。

線程比較輕量級。線程執行開銷小,不利于資源管理和保護。程序相反。

程序間的通信Queue:放資料put,取資料get,判空empty,判滿full

筆記1:網絡程式設計
筆記1:網絡程式設計

程序通信案例,其中一個程序是網上下載下傳資料,一個程序是分析資料。如果是線程可以通過全局變量共享資料。如果是程序需要引入通信queue的get和put讀寫資料達到共享。

筆記1:網絡程式設計
筆記1:網絡程式設計

程序池pool:對程序管理,join阻塞主程序,等待程序池裡面程序執行。程序池中如果有異常是不會在螢幕上列印的

筆記1:網絡程式設計

range與xrange的差別,前者基于疊代器傳回的結果,占用大量空間;後者傳回可以疊代對象,什麼時候用什麼時候取。Python3經過改進後,将range改進近似xrange節約空間

疊代器執行儲存的結果,疊代器生成代碼next控制結果,具備yield辨別有return的效果,而且運作速度快。

yield實作多任務

筆記1:網絡程式設計

pip安裝到python2裡面,pip3安裝到python裡面

greenlet是對yield的高端封裝,可以直接寫greenlet不用再添加yeild。通過switch切換函數

筆記1:網絡程式設計

gevent異步并發庫,其采用協程方式。(推薦使用,yield和greenlet了解即可)

筆記1:網絡程式設計

gevent圖檔下載下傳案例

筆記1:網絡程式設計

程序是資源配置設定機關,線程是作業系統排程機關

程序切換需要很大的資源,效率低;線程切換資源一般效率一般

協程切換任務資源很小,效率高

多程序多線程根據cpu核數不同可能是并發,但是協程在一個線程中是并發

作者:白甯超,工學碩士,現工作于四川省計算機研究院,研究方向是自然語言處理和機器學習。曾參與國家自然基金項目和四川省科技支撐計劃等多個省級項目。著有《自然語言處理理論與實戰》一書。 自然語言處理與機器學習技術交流群号:436303759 。

出處:http://www.cnblogs.com/baiboy/

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。