實現併發
if __name__ ==
'__main__'
:# 暈,有點忘記了。他的目的是,在匯入模組時不會讓匯入的模組在這個程式裡重複執行。
實現併發,基本步驟:
import socketserver # 在s端實現併發,要匯入這個類,這是乙個框架。
class
my_server
(socketserver.baserequesthandler)
:# 自己建立乙個類,必須繼承socketserver.baserequesthandler父類。
defhandle
(self)
:# 自己建的方法,名字必須叫這個 handle 因為在父類裡有和他相同名字的方法。r
pass
# 所有的邏輯部分放在這裡
if __name__==
"__main__"
:# 避免匯入模組時的重複執行
server=socketserver.threadingtcpserver(
("127.0.0.1"
,8000
),my_server)
# 這裡其實就是和 c 端建立連線等等。
server.serve_forever(
)# 要執行就得用這個方法來實現
執行緒:乙個執行緒就是一堆指令集合,是讓os執行起來的最小指令,執行緒之間可以資源共享
import threading # 要建立多執行緒要匯入這個模組
import time
deffoo
(n):
print
("foo%s"
%n) time.sleep(1)
defbar
(n):
print
("bar%s"
%n) time.sleep(2)
start_time=time.time(
)t1=threading.thread(target=foo,args=(1
,))# 創立t1這個物件,target=foo,是要執行的函式,args=(1,)是給函式傳的引數
t1.start(
)# 必須用這個方法才能執行這個物件。
t2=threading.thread(target=bar,args=(2
,))# 這樣相當於在主線程裡新增了子執行緒
t2.start(
)# t2.join() #方法:意思是等待 t2 執行完了,再向下執行。
end_time=time.time(
)print
("------主線程-----------"
程序:乙個程序可以多個執行緒,對多個程序資源的乙個整合
網路程式設計(二)
網路程式設計基礎 二 struct in addr 這個結構體中儲存的是網路二進位制的ip位址 include struct hostent gethostbyname const char name name 網域名稱 返回值 struct hostent define h addr h addr...
網路程式設計(二)
一 流式服務和資料報服務 1 位元組流服務 傳送端send 只是將資料寫到tcp傳送緩衝區中,然後將傳送緩衝區中的資料打包成報文段傳送出去。接收端又將接收到的報文段寫到緩衝區中,最後recv 直接取資料。位元組流服務特點 資料沒有明確分割 由底層做分割 不分一定的報文段,什麼時候想發便可將寫入緩衝區...
網路程式設計(二)
在之前的部落格中,介紹了傳輸層的一種重要協議 tcp協議。今天來介紹另外一種傳輸層協議 udp 一 udp udp 無連線的 不可靠的 資料報服務。首先看一下udp報頭 從上圖可以看出,udp協議報頭比tcp協議報頭簡單很多,沒有tcp報頭裡面那麼多的保證機制,所以udp較比tcp簡單。不可靠 ud...