基於多執行緒來實現併發的socket套接字

2022-03-11 09:13:12 字數 937 閱讀 5787

server

import socket

from threading import thread

def server(conn):

while true:

try:

data=conn.recv(1024)

except exception:

continue

if data==b'q':

print('關閉子執行緒連線')

break

conn.send(data.upper())

if __name__ == '__main__':

soc = socket.socket()

soc.bind(('127.0.0.1', 8080))

soc.listen(2)

while true:

conn, addr = soc.accept()

print(f'已連線')

t=thread(target=server,args=(conn,))

t.start()

client

import socket

soc=socket.socket()

soc.connect(('127.0.0.1',8080))

while true:

inp=input('請輸入')

data=inp.encode()

soc.send(data)

get_data=soc.recv(1024)

print(get_data)

每當有乙個客戶端傳送請求的時候,服務端就會建立乙個連線,因為服務端始終都是卡在 conn, addr = soc.accept()這一步,也就是等待連線建立的這一步,只要有連線他就會繼續往下走,然後就完事了,接下來都很簡單。

shell多執行緒 2 之基於管道實現併發

在shell指令碼裡批量執行程式是比較常見的方式,如果程式很多,每個執行時間比較長,則順序執行需要花費大量的時間。此時併發就成為我們考慮的方向。上篇 shell多執行緒 中我們已經簡單實現了基於for迴圈的併發,可以顯著提高工作效率 缺點是cpu的核心不是無限的,如果全部占用,則會影響系統的正常執行...

同步,多執行緒 ,多執行緒方式實現併發。

io請求幾乎不佔cpu的。同步請求相當於排隊買東西,乙個卡主了,其他的都結不了賬了。執行緒並不是越多越好,如果他特別多還不如同步高,所以對執行緒要有個限制,所以就出現了執行緒池,執行緒池在python3裡才有的,python2裡沒有的。建立程序的話是耗費很多資源的,建立執行緒是幾乎不耗費資源的。建立...

多執行緒併發佇列實現

2.使用 wait notify 實現乙個佇列,佇列有2個方法,add 和 get add方法往佇列中新增元素,get方法往佇列中獲得元素。佇列必須是執行緒安全的。如果get執行時,隊列為空,執行緒必須阻塞等待,直到有佇列有資料。如果add時,佇列已經滿,則add執行緒要等待,直到佇列有空閒空間。1...