併發程式設計的理論 python中實現多程序

2022-08-18 16:03:17 字數 3007 閱讀 2675

1併發程式設計就是讓你的程式可以同時處理多個任務

2.併發程式設計的基石是 多道技術

空間復用:同乙個時間 記憶體儲存了多個程式

時間復用:當乙個程式遇到了io操作,或者長時間占用cpu後切換到其他程式上,來提高cpu利用率

多道技術的缺點:當應用程式都是計算任務時候切換反而會降低效率(但是必須切換才能保證多工併發)

3 併發 與 並行

併發 多個事件同時發生,也稱為偽並行

並行多個事件同時進行

阻塞和非阻塞 指的是程式的狀態:

1.就緒  2.執行 3.阻塞

4兩種使用程序的方式

1.直接建立process物件 指定target引數

from multiprocessing import

process

importos#

deftask(name):

print

(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呼叫時提高優先順序 優先呼叫執行完子程序後 再去執行 父程序中的接下去的**程式

import

time

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  time

from 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...