python编程理论_Python并发编程理论篇,来看看
其實關于Python的并發編程是比較難寫的一章,因為涉及到的知識很復雜并且理論偏多,所以在這里我盡量的用一些非常簡明的語言來盡可能的將它描述清楚,在學習之前首先要記住一個點:并發編程永遠的宗旨就是提高程序的運行效率,也是圍繞CPU來進行優化的一種技術手段。
像我們之前學習過的網絡編程中,我們只是基于socketserver模塊讓我們的Server端有了處理多任務的能力,但是我們并不了解它的底層是怎么做到的,在學習完并發編程后,嘗試自己閱讀一下socketserver源碼,你將會大有收獲。
并發編程很重要嗎?是的,非常重要,如果你想進入PythonWeb領域那么著名的框架如Django,Tornado,Flask等等底層都是有基于本章節的知識點,如果你想進入爬蟲領域那就更不用說了,非常強大的scrapy框架也是基于我們所學的這些東西累積起來的。
好了廢話不多說,讓我們開始進入并發編程的學習吧。
從任務處理角度看待操作系統發展史
這一節主要是理論知識,了解計算機任務處理方式的演變過程,能夠讓我們更快的理解和學習并發編程。
首先,我們先來回顧一下操作系統方面的一些知識。
操作系統的作用:管理硬件,目的就是讓用戶更加方便的來操控計算機底層的硬件。
可以看到操作系統對于人們操控計算機進行作業有著不可小覷的功勞,那么在早期沒有操作系統的時候你能想象是什么樣子嗎?現在我們來看一看。
無操作系統時任務的處理方式
早期的計算機并沒有操作系統,而是通過紙帶來進行程序的編輯,它有三臺設備分別是:輸入機,計算機,輸出機。
這個時代的計算機一次只能跑一個人的程序,沒有其他干擾,那么它的缺點也很明顯,一次只能一個人使用而后面想要使用的人必須得等待前一個人用完之后才行。其執行效率非常低下,最關鍵的就是人在進行與計算機交互的時候計算機的運算器是沒有任何工作的,這就造成了資源上極大的浪費,那么這種浪費可以理解為I/O阻塞。
為了解決這個問題,批處理系統橫空出世了。
批處理系統的誕生
相比于前一代計算機處理任務的方式,批處系統的誕生讓這一代計算機有了極大的進步,并且輸入也不再使用紙帶,而是采用磁帶,批處理操作系統可以將多個用戶的任務同時提交(但是不能同時運行)。
假設有三個程序員需要使用這臺計算機,他們將自己的程序全部交由一個程序員讓其進行人機之間的交互,那么這樣就節省了三倍的時間。但是這樣的缺點也很明顯,只能等待三個人的程序全部處理完后大家才能拿到各自的結果,這個等待過程是十分漫長的。
在這里,出現了一種自動化的工作方式,計算機也就是中間的7094機器能夠去區分出每個程序員自己的程序,那么其內部肯定是由一種代碼支持它有了這種功能,那個這個就是批處理系統。
單處理的批處理系統最大的缺點依然還是擁有I/O阻塞,能不能把中間的兩個小人全部干掉讓計算機來做他們做的事兒呢?當然可以,但是…當時的人還沒那么聰明。
image-20200629232414224
我們再來想一個問題,如果程序員A的程序出錯了,它第一時間拿不到,返回會一直卡在那,程序員B和程序員C也不用拿了,反正都出不來。是不是很蛋疼?
后來慢慢的經過時間的積累與技術的成熟,針對這一代的批處理系統的缺點,又出現了新一代操作系統。
多道程序設計與分時操作系統的誕生
在這一代操作系統中最先出現了一種技術,名叫SPOOLING技術,這個技術的出現讓上圖的兩個小人下崗了。SPOOLING技術的出現極大的減少了I/O阻塞的時間,除此之外,該代操作系統還提出了一個非常重要的思想,即多道程序設計的思想,這個技術思想目前在我們的進程中依然存在,它的主要功能就是解決了順序執行(串行)的問題。
image-20200629234014499
盡管這樣做的確讓程序效率提高了,但是我們還有一個問題。計算機中依然是批處理系統,還是要等A,B,C的叅櫊程序同時出結果才能拿到最終結果,這個時間太長了,就想上面說的如果程序員A的程序出錯了卡住了程序員B和C的正常程序也取不出來。
有的人開始懷念最早的無操作系統時代的計算機了,太懷念了,我一個人的程序十分鐘我就出來了,三個人的我要等三十分鐘,如果有一個出錯了我的等在久也出不來,我太難了…
為了解決這種問題,出現了極為牛逼的分時操作系統。
分時很形象的一個比喻就是一臺電腦給A,B,C每個程序員一個鍵盤鼠標和顯示器,大家共有一個主機各玩各的互不影響,都認為自己的程序是獨享的并且馬上就能看到自己程序的運行結果,你說牛不牛逼?大家都很開心,但是實際上大家還是共用的同一個CPU…(多用戶多任務)。
分時操作系統到現在依然存在,并且還十分常見,比如許多人去操作同一臺服務器。
這時候大家就在考慮,你丫鍵盤鼠標顯示器啥都給我了,為啥不再給我一個主機呢?這其實還是受限于當時的成本條件,但是到了如今計算機的成本以及體積都下來后,這些都不是問題了。
個人操作系統的誕生
現在咱們大家都是用的個人操作系統,已經挺熟練了吧,這個玩意兒每個人都在玩,但是雖然大家不共有一個CPU了,其實在系統內部依然存在著切換,它就是進程或者線程之間的切換。
總結
以上是生活随笔為你收集整理的python编程理论_Python并发编程理论篇,来看看的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python实例 75,76
- 下一篇: websocket python爬虫_p