day30 并发编程
生活随笔
收集整理的這篇文章主要介紹了
day30 并发编程
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
大文件上傳思維邏輯
服務端
# 1.socket創建TCP服務 # 2.連接循環 # 3.通信循環 接受固定長度的字典的報頭解析獲取字典數據的真實長度接受字典數據 解碼 反序列化成字典從字典中獲取文件大小 以及文件名等其他信息 # 4.循環接受文件數據文件操作(wb) 接受一行往文件中寫入一行客戶端
# 1.socket客戶端代碼 # 2.利用os.listdir獲取文件夾中所有的文件名 # 3.循環打印 供用戶選擇想要上傳的文件 用戶選擇是否符合要求 # 4.根據用戶尋找及os.path.join方法拼接用戶想要上傳的文件絕對路徑 # 5.根據文件路徑獲取文件大小os.path.getsize() # 6.定義一個發送給服務端的字典 {"file_name":用戶選擇的文件名,"file_size":文件大小,...額外鍵值對消息} # 7.制作字典的報頭 序列化 編碼 # 8.發送字典的報頭 # 9.發送字典數據 # 10.發文件 文件操作 一行行讀取并發送?
UDP的特點
#1 數據報協議(自己自帶報頭) #2 基于UDP協議傳輸數據 數據是不安全的 #3 你就把UDP看成發短信 你只管發 對方收不收 看不看跟你一毛錢關系 簡易版本的qq基于UDP開發?
UDP跟TCP的區別
# 1.多個客戶端可以實現并發的效果 # 2.服務端不存在 客戶端也不會報錯(sendto) # 3.不會粘包 # 4.允許發空?
異常處理
當你不確定某一些代碼在什么樣的情況下會出錯 你可以考慮使用異常處理 (能盡量少用就盡量少用) 異常處理過多 會造成代碼結構更加?
異常的類型
# 1.語法錯誤 # 2.邏輯錯誤try: 可能會出異常的代碼塊 except 異常的類型 as e: # 將異常的報錯消息 賦值給e print(e) else: try代碼塊沒有任何異常發生才會觸發else的運行 finally: 無論是否發生異常 都會執行finally內部代碼異常類型:Exception BaseException 萬能異常自定義異常 class MyError(BaseException): def __init__(self,msg): super().__init__() self.msg = msg def __str__(self) return '%s'%self.msg主動拋出異常 raise TypeError('')斷言 assert?
socketserver
socketserver能夠支持服務端的并發效果
并發編程
計算機發展史
進程理論
創建進程的兩種方式(******)
進程方法join
進程對象及其他方法
進程間數據互相隔離
守護進程
互斥鎖(*****)
多道技術
?
并發與并行
# 并發:看起來像同時運行的就可以 # 并行:真正意義上的同時執行 單核的計算機能不能實現并行,但是可以實現并發?
?程序與進程
# 程序:一坨代碼 # 進程:正在運行的程序?
同步與異步
同步異步:表示的是任務的提交方式 # 同步:任務提交之后 原地等待的任務的執行并拿到返回結果才走 期間不做任何事(程序層面的表現就是卡住了) # 異步:任務提交之后 不再原地等待 而是繼續執行下一行代碼(結果是要的 但是是用過其他方式獲取)阻塞非阻塞
阻塞非阻塞:表示的程序的運行狀態 # 阻塞:阻塞態 # 非阻塞:就緒態 運行態強調:同步異步 阻塞非阻塞是兩對概念 不能混為一談
僵尸進程與孤兒進程
# 僵尸進程 父進程回收子進程資源的兩種方式 1.join方法 2.父進程正常死亡 所有的進程都會步入僵尸進程# 孤兒進程 子進程沒死 父進程意外死亡 針對linux會有兒童福利院(init) 如果父進程意外死亡他所創建的子進程都會被福利院收養 守護進程
互斥鎖
?
FTP作業
轉載于:https://www.cnblogs.com/Ryan-Yuan/p/11327920.html
總結
以上是生活随笔為你收集整理的day30 并发编程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小程序基础能力~网络
- 下一篇: Flink编程入门(二)