python單線程下實現(xiàn)多個socket并發(fā)過程詳解
更新時間:2019年07月27日 16:39:43 作者:bainianminguo
這篇文章主要介紹了python單線程下實現(xiàn)多個socket并發(fā)過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
先看服務端的代碼
import sys
# import socket
import time
import gevent
from gevent import socket
from gevent import monkey
monkey.patch_all()
#類似于python中的黑魔法,把很多模塊的阻塞的變成非阻塞的,比如socket中的rece和send都變
# 為不阻塞了
def server(port):
s = socket.socket()
s.bind(("127.0.0.1",port))
s.listen(2000)
while True:
cli,add = s.accept()
gevent.spawn(handle_request,cli)
#通過gevent的啟動一個協(xié)程,把客戶端的socket對象傳進去
def handle_request(s):
try:
while True:
data = s.recv(1024)
print("收到的信息:",str(data,encoding="utf-8"))
s.send(data)
if not data:
s.shutdown(socket.SHUT_WR)
#把和客戶端這個鏈接銷毀
except Exception as ex:
print(ex)
finally:
s.close()
if __name__ == '__main__':
server(8000)
在看客戶端的代碼,分別使用多線程和多進程實現(xiàn)
import socket
import gevent
import threading
import multiprocessing
'''
ip_bind = ("127.0.0.1",8000)
c = socket.socket()
c.connect(ip_bind)
while True:
data = input("客戶端:")
c.send(bytes(data,encoding="utf-8"))
data = c.recv(1024)
print("服務端:",str(data,encoding="utf-8"))
c.close()
'''
import socket
import gevent
ip_bind = ("127.0.0.1",8000)
c = socket.socket()
c.connect(ip_bind)
def f(n):
while True:
# c.send(bytes(n,encoding="utf-8"))
data = str(n)
c.send(bytes(data,encoding="utf-8"))
data = c.recv(1024)
print("server:",str(data,encoding="utf-8"))
c.close()
x = []
if __name__ == '__main__':
l = []
"""
多線程實現(xiàn)并發(fā)客戶端
for i in range(500):
t = threading.Thread(target=f,args=[str(i),])
t.start()
l.append(t)
for t in l:
t.join()
"""
# 多進程實現(xiàn)并發(fā)客戶端
for i in range(100):
p = multiprocessing.Process(target=f,args=[i,])
p.start()
l.append(p)
for p in l:
p.join()
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- python網(wǎng)絡編程socket實現(xiàn)服務端、客戶端操作詳解
- Python Websocket服務端通信的使用示例
- python實現(xiàn)WebSocket服務端過程解析
- Python 網(wǎng)絡編程之TCP客戶端/服務端功能示例【基于socket套接字】
- python Socket之客戶端和服務端握手詳解
- Python+Socket實現(xiàn)基于TCP協(xié)議的客戶與服務端中文自動回復聊天功能示例
- python實現(xiàn)socket客戶端和服務端簡單示例
- Python Socket多線程并發(fā)原理及實現(xiàn)
- python如何使用socketserver模塊實現(xiàn)并發(fā)聊天
- python利用socketserver實現(xiàn)并發(fā)套接字功能
- python 實現(xiàn)socket服務端并發(fā)的四種方式
相關文章
python如何使用pywebview打造一個現(xiàn)代化的可視化GUI界面詳解
pywebview是一個輕量級的跨平臺庫,它可以讓你在Python程序中嵌入一個瀏覽器窗口,下面這篇文章主要給大家介紹了關于python如何使用pywebview打造一個現(xiàn)代化的可視化GUI界面的相關資料,需要的朋友可以參考下2024-07-07
Python @property及getter setter原理詳解
這篇文章主要介紹了Python @property及getter setter原理詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-03-03
Caffe數(shù)據(jù)可視化環(huán)境python接口配置教程示例
這篇文章主要為大家介紹了Caffe數(shù)據(jù)可視化環(huán)境python接口配置教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-06-06
Python+Pygame實戰(zhàn)之俄羅斯方塊游戲的實現(xiàn)
俄羅斯方塊,作為是一款家喻戶曉的游戲,陪伴70、80甚至90后,度過無憂的兒時歲月,它上手簡單能自由組合、拼接技巧也很多。本文就來用Python中的Pygame模塊實現(xiàn)這一經(jīng)典游戲,需要的可以參考一下2022-12-12
從np.random.normal()到正態(tài)分布的擬合操作
這篇文章主要介紹了從np.random.normal()到正態(tài)分布的擬合操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06

