python 併發程式設計基礎之 程序

2022-08-24 23:24:14 字數 2702 閱讀 7723

目錄多道技術(基於單核情況下研究):

併發與並行:

程序程序的三個狀態:

同步和非同步:

建立程序的兩種方式:

乙個計算機機房,一次只能被乙個卡片使用。

缺點:cpu利用率最低。

支援多使用者去使用乙個計算機機房。

高速磁碟:

提高檔案的讀取速度。

優點:提高cpu的利用率

多個程式使用cpu時是序列。必須讓乙個程式結束後,下乙個程式才能執行。

​ 乙個cpu可以提供給多個使用者去使用。

​ 切換 + 儲存狀態

io操作:

​ input()

​ print()

​ time.sleep(3)

​ 1、若cpu遇到io操作,會立即將當前執行程式cpu使用權斷開。

​ 優點:

​ cpu的利用率高。

​ 2、若乙個程式使用cpu的時間過長,會立即將當前執行程式cpu使用權斷開。

​ 缺點:

​ 程式的執行率降低

​ 併發: 指的是看起來像同時在執行,多個程式不停 切換 + 儲存狀態。

​ 並行: 真實意義上的同時執行,在多核(多個cpu)的情況下,同時執行多個程式。

程式: 一堆**。

程序: 一堆**執行的過程。

​ 時間片輪轉法 + 分級反饋佇列

1、先來先服務排程:

a,b程式,若a程式先來,先占用cpu。

​ 缺點:

​ 程式a先使用,程式b必須等待程式a使用cpu結束後才能使用。

2、短作業優先排程:

a,b程式,誰的用時短,先優先排程使用cpu。

​ 缺點:

​ 若程式a使用時間最長,有n個程式使用時間短,

​ 必須等待所有用時短的程式結束後才能使用。

3、時間片輪轉法

cpu執行的時間1秒中,載入n個程式,要將1秒等分成多n個時間片。

4、分級反饋佇列

將執行優先分為多層級別。

​ 1級; 優先順序最高。

​ 2級;優先順序第二,以次類推。

​ 3級

​ .......

​ 所有程序建立時都會進入就緒態,準備排程。

​ 排程後的程序,進入執行態。

​ 凡是遇到io操作的程序,都會進入阻塞態。

若io結束,必須重新進入就緒態。

​ 指的是提交任務的方式。

​ 若有兩個任務需要提交,在提交第乙個任務時,

​ 必須等待該任務執行結束後,才能繼續提交並執行第二個任務。

​ 若有兩個任務需要提交,在提交第乙個任務時,

​ 不需要原地等待,立即可以提交並執行第二個任務。

阻塞:​ 阻塞態。遇到io一定會阻塞。

非阻塞:

​ 就緒態

​ 執行態

最大化提高cpu的使用率:

盡可能減少不必要的io操作。

from multiprocessing import process

import time

# 方式一:

def task():

print('子程序開始執行')

time.sleep(1)

print('子程序結束完畢')

# 在windows系統下建立,必須要在__main__執行

- __mian__下:

# target=執行任務(函式位址)

p = process(target=task)

p.start() # 告訴作業系統,建立子程序

# join

p.join() # 讓主程序等待所有子程序結束後才能結束

print('主程序' )

# 方式二:

- 自定義類,繼承process

class myprocess(process):

def run(self):

# 此處是子程序的任務

print('子程序開始執行')

time.sleep(1)

print('子程序結束完畢')

- __mian__下:

p = myprocess()

p.start() # 告訴作業系統,建立子程序

# join

p.join() # 讓主程序等待所有子程序結束後才能結束

print('主程序' )

程序號**的兩種條件:

1.join,可以**子程序與主程序。

2.主程序正常結束,子程序與主程序也會被**。

3.殭屍程序與孤兒程序(了解):

殭屍程序:

指的是子程序已經結束,但pid號還存在,未銷毀.

缺點:占用pid號,占用作業系統資源.

孤兒程序:

指的是子程序還在執行,但父程序意外結束.

作業系統優化機制:

提供乙個福利院,幫你**沒有父親的子程序.

4.守護程序:

指的是主程序結束後,該主程序產生的所有子程序跟著結束,並**.

併發程式設計 程序基礎

作業系統 阻塞和非阻塞 非阻塞 程序只會在就緒和 執行狀態中切換 程序三狀態 就緒 執行 阻塞 併發並行 子程序和主程序 多併發的tcp服務端 程序是作業系統中最小的資源分配單位 程序process 開啟子程序 join控制子程序 守護程序 daemon 鎖同步控制 訊號量 機制 計數器 鎖實現的 ...

python併發程式設計 程序,併發

1.程序是乙個正在執行的程式,或者說是程式執行的過程,程序是個抽象概念 程序起源於作業系統,是作業系統最核心的概念,作業系統所有其他的概念都是圍繞程序展開 研究程序最底層就是在研究作業系統底層 2.序列 程序 乙個任務完完整整的執行完畢後,在執行下乙個任務 3.併發 程序 看起來多個任務是同時執行即...

Python併發程式設計 程序

1.意義 充分利用計算機多核資源,提高程式的執行效率。2.實現方案 多程序 多執行緒 3.並行與併發 1.定義 程式在計算機中的一次執行。2.系統中如何產生乙個程序 使用者空間通過呼叫程式介面或者命令發起請求 作業系統接收使用者請求,開始建立程序 作業系統調配計算機資源,確定程序狀態等 作業系統將建...