Python解决socket网络并发中线程与进程并发问题,非IO多路复用的伪多路处理。
客户端
import socket
import time
#循环发送内容
def send_info(conn):
conn.sendall('123'.encode('utf-8'))
# time.sleep(1)
data = conn.recv(1024)
print(data)
def run():
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('127.0.0.1', 8080))
send_info(sock)
sock.close()
if __name__ == '__main__':
for i in range(10):
run()
多线程服务端端
import socket
import threading
def send_info(conn):
data = conn.recv(1024)
print(data)
conn.sendall('123'.encode('utf-8'))
print('发送完毕')
def run():
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(('127.0.0.1', 8080))
sock.listen(5)
while True:
conn, addr = sock.accept()
t1 = threading.Thread(target=send_info, args=(conn,))
t1.start()
sock.close()
if __name__ == '__main__':
run()
多进程服务端
import socket
import multiprocessing
def send_info(conn):
data = conn.recv(1024)
print(data)
conn.sendall('123'.encode('utf-8'))
print('发送完毕')
def run():
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(('127.0.0.1', 8080))
sock.listen(5)
while True:
conn, addr = sock.accept()
t1 = multiprocessing.Process(target=send_info, args=(conn,))
t1.start()
sock.close()
if __name__ == '__main__':
run()