码迷,mamicode.com
首页 > 编程语言 > 详细

第十七节 单进程、单线程、非堵塞实现并发验证

时间:2020-03-31 01:27:36      阅读:76      评论:0      收藏:0      [点我收藏+]

标签:方式   false   nbsp   soc   其他   成交   处理   locking   多个   

import socket

‘‘‘
用来验证协程的实现原理,除了多进程是直接进行多个任务进行,多线程和多线程的本质都是运用阻塞时间处理其他数据
进程是并行的,真正的同时运行;线程和协程是并发的,是运用间隔时间轮流调用
‘‘‘

tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcp_socket.bind((‘‘, 8080))
tcp_socket.listen(128)
tcp_socket.setblocking(False)  # 设置套接字为非堵塞的方式,解除accept()阻塞
client_socket_list = list()

while True:
    try:
        new_socket, new_addr = tcp_socket.accept()
    except Exception as e:
        print(没有新的客户端到来)
    else:
        client_socket_list.append(new_socket)        
        print(没有异常产生,来了一个客户端)
        new_socket.setblocking(False)  # 将新的套接字设置套接字为非堵塞的方式,解除调用recv方法的等待客户端发送数据时的阻塞
    for client_socket in client_socket_list:
        try:
            recv_data = client_socket.recv(1024)
        except Exception as e:
            print(这个客户端还有没发送数据过来)
        else:
            print(已经收到这个客户端的信息)
            print(recv_data)
            if recv_data:
                print("客户端发送数据中")
            else:  # 客户端调用了close(),导致传送过来的数据为空
                client_socket.close()  #关闭这个套接字
                client_socket_list.remove(client_socket)  # 这个套接字已经完成交互,将其移除出列表

 

第十七节 单进程、单线程、非堵塞实现并发验证

标签:方式   false   nbsp   soc   其他   成交   处理   locking   多个   

原文地址:https://www.cnblogs.com/kogmaw/p/12602508.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!