一、基於多進程實現併發的套接字通訊,完成以下功能:
一、客戶端連接功成功後,先登陸,登陸成功後才能夠執行其餘功能
二、登陸成功後能夠執行下載功能
三、登陸成功後能夠執行上傳功能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 編程複雜,更適用於基於網絡交換數據