python實現單執行緒多工非阻塞TCP服務端

2022-09-27 07:03:10 字數 1058 閱讀 7158

# coding:utf-8

from socket import *

# 1.建立伺服器socket

sock = socket(af_inet程式設計客棧, sock_stream)

# 2.繫結主機和埠

addr = 程式設計客棧('', 7788) #

sock.bind(addr)

# 3. 設定最大監聽數目,併發

sock.listen(10)

# 4. 設定成非阻塞

sock.setblocking(false)

# 儲存客戶端socket

clientaddrlist =

# print(sock.)

while 1:

try:

clientsocket, clientaddr = sock.accept()

except:

pass

else:www.cppcns.com

print("乙個新客戶端到來:%s" % str(clientaddr))

clientsocket.setblocking(false)

clientaddrlist.append((clientsocket, clientaddr))

for clientsocket, clientaddr in clientaddrlist:

try:

recvdata = clientsocket.recv(1024)

except:

pass

else:

if len(recvdata) > 0:

print("%s:%s" % (str(clientaddr),程式設計客棧 recvdata))

else:

clientsocket.close()

clientaddrlist.remove((cl程式設計客棧ientsocket, clientaddr))

print("%s 已經下線" % str(clientaddr))

本文標題: python實現單執行緒多工非阻塞tcp服務端

本文位址:

爬蟲 單執行緒 多工非同步協程

要點 1.resquests模組不支援非同步,在需要非同步的地方使用aiohttp模組進行替換 2.定義乙個協程函式,建立協程任務,將 協程 打包為乙個 task 排入日程準備執行。返回task物件 獲取當前事件迴圈,開啟迴圈 data await response.read 此處參考aiohttp...

爬蟲 單執行緒 多工非同步協程

任務物件 事件迴圈 aiohttp 支援非同步網路請求的模組 伺服器端 from flask import flask import time def index bobo time.sleep 2 return hello index1 def index jay time.sleep 2 ret...

單執行緒任務佇列

下邊 解決了 避免建立新執行緒 規避了執行緒池的建立過多執行緒 解決浪費資源問題using system using system.collections.generic using system.text using system.threading namespace mythreadpool ...