程序:
正在執行的程式,用來描述程式執行的過程(虛擬概念)
程式:指的是一堆**
程序:程式的執行過程
作業系統:
用於協調/管理/控制,控制計算機
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方式2join 方法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('
主程序...
')
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 過程的可再重現性 簡單點說就是不管你的計算機配置高還是配置低 什麼時候執行 什麼地方執行,它...
理解併發程序
順序程式設計 程式順序執行是指其在處理器上的執行是嚴格有序的,即只有在前乙個操作結束後才能開始後續操作。如果有多個程式,這些程式必須按照呼叫次序嚴格有序執行。而且這些程式如果中斷,這是允許的,但不停止,中斷不會對程式最終造成影響,也就是說程式執行結果與執行速度無關。舉例 按順序從上往下求解過程雞兔同...