1併發程式設計就是讓你的程式可以同時處理多個任務
2.併發程式設計的基石是 多道技術
空間復用:同乙個時間 記憶體儲存了多個程式
時間復用:當乙個程式遇到了io操作,或者長時間占用cpu後切換到其他程式上,來提高cpu利用率
多道技術的缺點:當應用程式都是計算任務時候切換反而會降低效率(但是必須切換才能保證多工併發)
3 併發 與 並行
併發 多個事件同時發生,也稱為偽並行
並行多個事件同時進行
阻塞和非阻塞 指的是程式的狀態:
1.就緒 2.執行 3.阻塞
4兩種使用程序的方式
1.直接建立process物件 指定target引數
from multiprocessing importprocess
importos#
deftask(name):
(name)
print("
self
",os.getpid())
print("
parent
", os.getppid())
print("
task run")
#windows建立子程序時 子程序會將父程序的**載入一遍 導致重複建立子程序
#所以一定要將 建立子程序的**放到main的下面
if__name__ == '
__main__':
print("
self
", os.getpid())
print("
parent
", os.getppid())
p = process(target=task, name="
這是子程序!
",kwargs=) #
建立乙個表示程序的物件 但並不是真正的建立程序
p.start() #
給作業系統傳送通知 要求作業系統開啟程序
2繼承process 覆蓋run 方法
建立程序的第二種方式 繼承process 覆蓋run方法#在子程序啟動以後會自動執行run方法##
class myprocess(process):##
def __init__(self,url):
#self.url = url
#super().__init__()##
# 子類中的方法 只有run會被自動執行
5 每個程序之間的資料都是獨立的.子程序再被建立的時候會拷貝乙份父程序的資料, 而子程序中的資料修改,不影響父程序
6 p.join() 用來使子程序物件再被cpu呼叫時提高優先順序 優先呼叫執行完子程序後 再去執行 父程序中的接下去的**程式
importtime
from multiprocessing import
process
deftask():
print("
上傳檔案....")
time.sleep(3)
print("
上傳結束...")
#[程序1,程序2,程序3]
if__name__ == '
__main__':
p = process(target=task)
p.start()
p.join()
#本質上 是提高了子程序優先順序 當cpu在切換時 會優先切子程序
print("
上傳檔案成功!")
deftask(num):
print("
我是%s號 程序
" %num)
time.sleep(2)
print("
*****====")
if__name__ == '
__main__':
start_time =time.time()
ps =
for i in range(3):
p = process(target=task,args=(i,))
p.start()
for p in
ps: p.join()
print(time.time()-start_time)
print("
over
")
7.process 的常用屬性:
p.is_alive() # 布林值 判斷進行是否是存活執行的
p.terminate() 終止這個程序
p.daemon 守護程序
8 孤兒程序和殭屍程序
孤兒程序 指的是 父程序已經被終止了 但自己還在執行 是無害的 後續由作業系統接手進行**
殭屍程序 是指子程序執行完成所有任務後 已經終止了但是殘留了一些資訊 (程序id名字 等資源) 但是父程序沒有去處理這些殘留 ,殭屍程序是有害的,當出現大量的殭屍程序時 會占用系統資源 可以把它父程序殺掉 殭屍就成了孤兒 作業系統會負責**資料
import timefrom multiprocessing import process
def task1():
print("子程序 run")
if __name__ == '__main__':
for i in range(10):
p = process(target=task1)
p.start()
time.sleep(100000) 父程序睡眠產生殭屍程序
python 併發程式設計理論部分
一,什麼是程序?程序 正在進行的乙個過程或者說乙個任務。而負責執行任務的則是cpu 舉例 單核 多道,實現多個程序的併發執行 egon在乙個時間段內有很多任務要做 python備課的任務,寫書的任務,交女朋友的任務,王者榮耀上分的任務,但egon同一時刻只能做乙個任務 cpu同一時間只能幹乙個活 如...
併發程式設計理論
併發 在作業系統中,是指乙個時間段中有幾個程式都處於已啟動執行到執行完畢之間,且這幾個程式都是在同乙個處理機上執行,但任乙個時刻點上只有乙個程式在處理機上執行。簡言之,是指系統具有處理多個任務的能力。當系統有乙個以上cpu時,則執行緒的操作有可能非併發。當乙個cpu執行乙個執行緒時,另乙個cpu可以...
python之併發程式設計 理論部分
管理控制協調計算機中硬體與軟體的關係.作業系統的作用?第乙個作用 隱藏了醜陋的硬體呼叫介面,為應用程式設計師提供呼叫硬體資源的更好,更簡單,更清晰的模型 系統呼叫介面 第二個作用 將應用程式對硬體資源的靜態請求變得有序化 阻塞 input read write sleep recv accept s...