多執行緒併發模型

2021-10-02 09:31:19 字數 1853 閱讀 1228

【多執行緒併發模型】

基於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 多執行緒操作共享資源 併發 執行緒安全問題 同步 鎖 相對而言效能...