目錄
三、程序理論
四、開啟程序的兩種方式
參考部落格即可:
總結:
補充:我們直接假設單核就是乙個核,幹活的就乙個人,不要考慮cpu裡面的核心數
時間上的復用
切換(cpu)分為兩種情況
1.當乙個程式遇到io操作的時候,作業系統會剝奪該程式的cpu執行許可權
作用:提高了cpu的利用率 並且也不影響程式的執行效率
原因:在io延遲的時候程式對cup沒有任何執行的空間,所以剝奪了也不會影響程式執行
2.當乙個程式長時間占用cpu的時候,操作吸引也會剝奪該程式的cpu執行許可權
弊端:降低了程式的執行效率(原本時間+切換時間)
'''
程式和程序的區別
程式是一堆躺在硬碟上的**,是『死』的
程序則是表示正在執行的過程,是『活』的
'''
短作業優先演算法
時間片輪轉法+多級反饋佇列
在了解其他概念之前,我們首先要了解程序的幾個狀態。在程式執行的過程中,由於被作業系統的排程演算法控制,程式會進入幾個狀態:就緒,執行和阻塞。
(1)就緒(ready)狀態
當程序已分配到除cpu以外的所有必要的資源,只要獲得處理機便可立即執行,這時的程序狀態稱為就緒狀態。
(2)執行/執行(running)
狀態當程序已獲得處理機,其程式正在處理機上執行,此時的程序狀態稱為執行狀態。
(3)阻塞(blocked)狀態
正在執行的程序,由於等待某個事件發生而無法執行時,便放棄處理機而處於阻塞狀態。引起程序阻塞的事件可有多種,例如,等待i/o完成、申請緩衝區不能滿足、等待信件(訊號)等。
描述的是任務提交的方式
非同步就像要把乙份作業交給老師批改,小紅交給老師了,站在原地等老師批改完,小紅的行為叫做同步。而小李交給老師後就跑去完了,這種行為叫做非同步。
描述的是程式執行的狀態
非阻塞(就緒態,執行態)
# 方式一
from multiprocessing import process
import time
def task(name):
print(f' is running')
time.sleep(3)
print(f' is over')
if __name__ == '__main__':
p = process(target=task, args=('hz',))
p.start()
print('^(* ̄(oo) ̄)^')
# 方式二 類的繼承
from multiprocessing import process
import time
class myprocess(process):
def run(self):
print('hell 1')
time.sleep(3)
print('hello 2')
if __name__ == '__main__':
p = myprocess()
p.start()
print('^(* ̄(oo) ̄)^')
總結
"""
建立程序就是在記憶體中申請一塊記憶體空間將需要執行的**丟進去
乙個程序對應在記憶體中就是一塊獨立的記憶體空間
多個程序對應在記憶體中就是多塊獨立的記憶體空間
程序與程序之間資料預設情況下是無法直接互動,如果想互動可以借助於第三方工具、模組
"""
join是讓主程序等待子程序**執行結束之後,再繼續執行。不影響其他子程序的執行
具體使用:在程序開始後,程序物件.join()
from multiprocessing import process
import time
a = 100
def task(name):
print(f' is running')
time.sleep(3)
global a
a = 101
print(a)
print(f' is over')
if __name__ == '__main__':
p = process(target=task, args=('hz',))
p.start()
print(a)
p.join()
print('^(* ̄(oo) ̄)^')
'''
每日演算法 day 38
那些你早出晚歸付出的刻苦努力,你不想訓練,當你覺的太累了但還是要咬牙堅持的時候,那就是在追逐夢想,不要在意終點有什麼,要享受路途的過程,或許你不能成就夢想,但一定會有更偉大的事情隨之而來。mamba out 2020.3.24 如果 k n 那麼就要思考怎樣去選擇了 1.k 如果是偶數的話,選出來的...
Day38 資料庫入門學習
怎麼才能把資料永久儲存下來,根據我們以前的所學,檔案處理就可以將資料永久儲存。但是檔案處理有很大的問題 1.管理不方便 2.檔案操作效率問題 3.乙個程式不太可能僅執行在同一臺電腦上 那麼為了解決這些問題,採取了提高計算機效能的方式 1.垂直擴充套件 指的是更換效能更好的硬體 2.水平擴充套件 指的...
38 併發程式設計
一 多道技術 1.1 必備知識點 併發 看起來像同時執行的就可以稱之為併發 並行 真正意義上的同時執行 注 並行肯定算,單核的計算機肯定不能實現並行,但是可以實現併發!補充 我們直接假設單核就是乙個核,幹活的就乙個人,不要考慮cpu裡面的核心數 1.2 多道技術 節省多個程式執行的總耗時 1.2.1...