【多執行緒併發模型】
基於threading的多執行緒併發
1.對比多程序併發:
1.優點:
資源消耗小
2.缺點:
需要注意共享資源的爭奪
python多執行緒收到gil的影響
2.實現方式:
threading socket 模組完成
3.實現步驟:
1.建立套接字,繫結,監聽
2.接收客戶端連線請求,建立新的執行緒
3.主線程繼續等待其他客戶端連線,分支執行緒執行客戶端請求
4.處理完客戶端請求後,分支執行緒退出,關閉客戶端套接字
4.示例:
from socket import
*from threading import thread
import sys
host =
'0.0.0.0'
port =
8888
addr =
(host,port)
defclient_handle
(c):
print
('connect from'
,c.getpeername())
while
true
: data = c.recv(
1024
).decode()if
not data:
break
print
(data)
c.send(b'recieve your message'
) c.close(
)# 建立套接字
s = socket(
)# 設定埠可重用
s.setsockopt(sol_socket,so_reuseaddr,1)
s.bind(addr)
s.listen(
)# 迴圈接收客戶端請求
while
true
:try
: c,addr = s.accept(
)except keyboardinterrupt:
s.close(
) sys.exit(
'伺服器退出'
)except exception as e:
print
(e)continue
# 建立執行緒,繫結函式執行具體客戶端請求
t = thread(target=client_handle,args=
(c,)
) t.setdaemon(
true
) t.start(
)
客戶端**
from socket import
*# 建立套接字
sockfd = socket(af_inet,sock_stream)
# 發起連線
sockfd.connect(
('176.130.5.63'
,8888))
while
true
: data =
input
('傳送》')if
not data:
break
# 將內容變成bytes格式傳送
sockfd.send(data.encode())
# 接受訊息
data = sockfd.recv(
1024
).decode(
)print
('收到訊息:'
,data)
# 關閉套接字
sockfd.close(
)
多執行緒併發
多執行緒併發主要有3個方面 1 同步器 主要有synchronized,reentrantlock 訊號量,門栓 countdownlatch 障柵 cyclicbarrier 交換器。2 同步容器 主要包括 對映 集 佇列 對映 concurrenthashmap,concurrentskipli...
多執行緒併發
更簡單的執行緒池 多執行緒和多程序都可以很容易的實現併發,協程通過切換上下文來充分利用cpu實現併發效果 threading模組 thread類的基本狀態和行為 屬性名和值 name none,group none,target none,args kwargs daemon none 方法 sta...
(多執行緒)多執行緒的併發安全
多執行緒併發操作同乙個資源 同步鎖 多執行緒操作的鎖必須唯一 必須搞清楚 哪些 需要同步?那些在操作共享資源的 只要包含非讀的操作,或者根據共享資源進行條件判斷的,就需要同步!同步 塊解決 package com.gc.thread 多執行緒操作共享資源 併發 執行緒安全問題 同步 鎖 相對而言效能...