1. 程式人生 > >python是怎麽處理並發編程的(實用技巧)

python是怎麽處理並發編程的(實用技巧)

騰訊qq 單個 電影 使用 處理 分配 之前 處理器 一個

在處理並發編程之前我們先來了解一下基礎知識,這是我們並發編程問題的核心

1、什麽是程序?什麽是進程?
  程序說白了就是一堆文件
  進程就是一個正在執行的過程/程序

  所以說進程是一個抽象的概念
  這個概念起源操作系統

2、什麽是操作系統
  定義:
    操作系統是位於計算機硬件與應用軟件之間
    用於協調、管理、控制計算機硬件與軟件的資源的一種控制程序

3、操作系統的兩大作用:
  1、把復雜醜陋的硬件操作都封裝成美麗的接口,提供給應用程序使用
  2、把進程對硬件的競爭變的有序


4、多道技術
  多道的產生背景是想要在單個cpu的情況下實現多個進程並發執行的效果

  空間上的復用 (多道程序復用內存的空間)
  時間上的復用 (多道程序復用CPU時間)
  cpu遇到IO操作要切換(提升效率)
  一個進程占用cpu時間過長也切(降低效率)

  進程與進程之間的內存空間是互相隔離的

python並發編程之多進程

1 什麽是進程

一個進程就是 一個正在進行的程序或者任務

2 進程與程序的區別

程序是一堆代碼,或者說一個文件, 進程是程序的運行過程

需要註意的是:qq是一個程序,我在電腦上用qq登陸馬化疼的qq,同時又登陸了馬化騰大媳婦的qq,這是兩個進程

3 並發與並行

無論是並行還是並發,在用戶看來都是‘同時‘運行的,不管是進程還是線程,都只是一個任務而已,真是幹活的是cpu,cpu來做這些任務,而一個cpu同一時刻只能執行一個任務

  並發:單cpu,是偽並行,即看起來是同時運行,其實不是,單個cpu+多道技術就可以實現並發

  比如你可以一邊看電視同事吃飯

  並行 :同時運行,只有具備多個cpu才能實現並行

  

單核下,可以利用多道技術,多個核,每個核也都可以利用多道技術(多道技術是針對單核而言的

有四個核,六個任務,這樣同一時間有四個任務被執行,假設分別被分配給了cpu1,cpu2,cpu3,cpu4,

一旦任務1遇到I/O就被迫中斷執行,此時任務5就拿到cpu1的時間片去執行,這就是單核下的多道技術

而一旦任務1的I/O結束了,操作系統會重新調用它(需知進程的調度、分配給哪個cpu運行,由操作系統說了算

),可能被分配給四個cpu中的任意一個去執行

技術分享圖片

所有現代計算機經常會在同一時間做很多件事,一個用戶的PC(無論是單cpu還是多cpu),都可以同時運行多個任務(一個任務可以理解為一個進程)。

    啟動一個進程來殺毒(360軟件)

    啟動一個進程來看電影(暴風影音)

    啟動一個進程來聊天(騰訊QQ)

所有的這些進程都需被管理,於是一個支持多進程的多道程序系統是至關重要的

多道技術概念回顧:內存中同時存入多道(多個)程序,cpu從一個進程快速切換到另外一個,使每個進程各自運行幾十或幾百毫秒,這樣,雖然在某一個瞬間,一個cpu只能執行一個任務,但在1秒內,cpu卻可以運行多個進程,這就給人產生了並行的錯覺,即偽並發,以此來區分多處理器操作系統的真正硬件並行(多個cpu共享同一個物理內存)

python是怎麽處理並發編程的(實用技巧)