Python解决socket线程与进程并发

· Special

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()

python


评论

行为验证™ 安全组件加载中...