程序 與 併發(程序開啟方式,互斥鎖)

2022-08-19 15:18:10 字數 2800 閱讀 4381

程序:

正在執行的程式,用來描述程式執行的過程(虛擬概念)

程式:指的是一堆**

程序:程式的執行過程

作業系統:

用於協調/管理/控制,控制計算機

1.能夠將複雜的硬體封裝成簡單的介面給使用者使用

2.能夠將競爭的任務變得有序

併發:多個任務看起來是同時執行的

多道技術:

時間上的復用:多個程式復用cpu的時間

空間上的復用:多個程式復用記憶體空間

乙個任務占用cpu時間過長會被作業系統強行奪走cpu的執行許可權:比起序列執行效率更低

乙個任務遇到io操作也會被作業系統強行奪走cpu的執行許可權:比起序列執行效率更低

程序開啟的兩種方式:

方式1:

from multiprocessing import process

import time

def task(name):

print('開始',name)

time.sleep(1)

print('finish...')

if __name__ == '__main__':

p = process(target=task,args=('wxx',))

p.start() #向作業系統傳送了乙個開啟子程序的請求,實際上是在調task

print('主程序...')

from multiprocessing import

process

import

time

class

auth(process):

def__init__

(self,name):

super().

__init__

() self.name =name

defrun(self):

print('

開始:'

,self.name)

time.sleep(3)

print('

finish...')

if__name__ == '

__main__':

p = auth('

wxx'

) p.start()

#向作業系統傳送了乙個開啟子程序的請求,實際上是在調task

print('

主程序...

')

方式2join 方法 

join 讓主程序在原地等待,子程序執行完畢才會執行主程序

from multiprocessing import

process

import

time

deftask(name):

print('

start:

',name)

time.sleep(2)

print('

finish...')

if__name__ == '

__main__':

p_list=

for i in range(3):

p = process(target=task,args=(i,))

p.start()

for p in

p_list:

p.join()

print('

主程序...

')

**示例

互斥鎖

from multiprocessing import

process,lock

import

json,time

defchecker(name):

with open(

'db.json

','rt

',encoding=('

utf-8

')) as f:

dic =json.load(f)

time.sleep(1)

print('

%s 檢視還剩餘票 %s

'%(name,dic['

count

']))

defget(name):

with open(

'db.json

','rt

',encoding=('

utf-8

')) as f:

dic =json.load(f)

if dic['

count

'] >0:

dic[

'count

'] -= 1

print('

%s 購買了機票

' %name)

with open(

'db.json

', '

wt', encoding=('

utf-8

')) as wf:

json.dump(dic,wf)

else:print('

沒有票了')

deftask(name,mack):

checker(name)

mack.acquire()

get(name)

mack.release()

if__name__=='

__main__':

mack =lock()

for i in range(10):

p = process(target=task,args=('

name %s

' %i,mack))

p.start()

**示例

理解併發程序

說說你對順序程式設計與併發程式設計的理解。並舉乙個例子進行說明 順序程式設計 嚴格按照順序執行,不受外界因素影響,所以不會對結果產生影響。和程式設計思想一樣,自上而下順序執行。舉例 超市排隊買單,每個人按先後順序排隊,每個人所購買的商品不同,但是他們都需要買單,才能走出商場。併發程式設計 併發程式不...

理解併發程序

順序程式設計 1 執行的順序性 即乙個程式在處理器上是嚴格按照順序執行的,每個操作必須在乙個操作開始之前結束 2 環境的封閉性 程式執行獨佔全機資源,注意,是全機資源!後面我們可以看到和併發設計的不同點 3 過程的可再重現性 簡單點說就是不管你的計算機配置高還是配置低 什麼時候執行 什麼地方執行,它...

理解併發程序

順序程式設計 程式順序執行是指其在處理器上的執行是嚴格有序的,即只有在前乙個操作結束後才能開始後續操作。如果有多個程式,這些程式必須按照呼叫次序嚴格有序執行。而且這些程式如果中斷,這是允許的,但不停止,中斷不會對程式最終造成影響,也就是說程式執行結果與執行速度無關。舉例 按順序從上往下求解過程雞兔同...