進程相關內容

一、基於多進程實現併發的套接字通訊,完成以下功能:
一、客戶端連接功成功後,先登陸,登陸成功後才能夠執行其餘功能
二、登陸成功後能夠執行下載功能
三、登陸成功後能夠執行上傳功能python

2.什麼是互斥鎖 
 
    顧名思義,相互排斥,一人使用,其餘人不能使用。
    鎖其實就是給執行代碼加上限制,本質上是一個標誌爲True,False

1用來解決什麼問題?  
當併發的操做共享資源發生的數據安全問題
2解決問題的原理是什麼? 
將訪問共享資源的代碼由併發變爲串行
3與join是的區別是什麼?
join:------
    join是讓整個進程任務全都串行
    join是固定死任務的執行順序
mutex------
    鎖能夠僅將部分代碼變爲串行
    鎖-多進程之間仍是公平競爭的
3.編寫模擬搶票代碼  分析總結什麼時候會出現數據錯亂
from multiprocessing import Process,Lock
import json

def show():
    with open("db.json")as f:
        data=json.load(f)
        print('剩餘票數',data['count'])
def buy():
    with open("db.json")as f:
        data=json.load(f)
        if data['count']>0:
            data['count']-=1
            with open("db.json",'wt')as f2:
                json.dump(data,f2)
                print('搶票成功')
def task(mutex):
    show()
    mutex.acquire()
    buy()
    mutex.release()
if __name__ == '__main__':
    mutex=Lock()
    for i in range(5):
        p=Process(target=task,args=(mutex,))
        p.start()
#什麼時候會錯亂
環境:
    前提給的票數限制越少,越會出現問題
    一張票出現併發的話,被多人搶到,出現實際多人了是同一張
    json讀碼出問題,wt寫入清空,在寫入的同時,另外一方由於速度快,讀入又寫入,致使甲方失敗
    在讀入的時候不改變,在buy的進程中先後加鎖後,限制了買的過程當中的讀入,保證安全
    show仍是能夠併發,buy加鎖串行-----讀寫分開

1兩個進程同時在寫的時候確定會出問題
2寫的進程正在進行,你讀的進程又來了

​ 4.進程隊列是什麼 有什麼特色編程

是一種特殊的容器
特色是先進先出
5.進程間通信有哪些方法說明優缺點
1共享文件
    優勢:數據量理論上沒有限制
    缺點:效率低
    適用於:交互不頻繁,且數據量較大狀況
    
2共享內存(主要方式)
    優勢:效率高
    缺點:數據量不能太大
    適用於:交互頻繁,交互量小
3管道:
    管道是基於文件的,它是單向的,百年城比較複雜
4socket
    編程複雜,更適用於基於網絡交換數據
相關文章
相關標籤/搜索