博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python学习笔记(六)多进程实现并发服务器
阅读量:6869 次
发布时间:2019-06-26

本文共 1489 字,大约阅读时间需要 4 分钟。

hot3.png

这个相对于多进程更加简单,每accept一个新的连接就创建一个新的线程。代码如下:

# coding: utf-8import socketimport sysimport errnoimport threadingfrom time import ctimeclass ClientThread(threading.Thread):    def __init__(self, client_socket, client_address):        threading.Thread.__init__(self)        self.client_socket = client_socket        self.client_address = client_address    def run(self):        self.handle_connection()    def handle_connection(self):        while True:            data = self.client_socket.recv(1024)            if not data:                print 'disconnect', self.client_address                self.client_socket.close()                break;            else:                self.client_socket.send('[%s] %s' % (ctime(), data)) #回显消息if __name__ == '__main__':    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)    listen_address = ('localhost', 9981)    server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)    server_socket.bind(listen_address)    server_socket.listen(10)    while True:        try:            (client_socket, client_address) = server_socket.accept()        except IOError, e:                        if e.errno == errno.EINTR:                continue #继续等待            else:                raise #将异常向外throw        print 'Got connection from ', client_address        t = ClientThread(client_socket, client_address)        t.start()

注意这里的thread不能进行join,否则会阻塞主线程,丧失并发能力。

另外,python中的线程不需要进行detach。

转载于:https://my.oschina.net/inevermore/blog/388660

你可能感兴趣的文章
Unit13 What's the date today?
查看>>
IP地址解析
查看>>
iPhone开发之object c基础一定义接口
查看>>
Linux下清除磁盘分区及残留raid信息
查看>>
如何确认第二个sskgslcas就是获得Buffer Pin锁
查看>>
在Eclipse中配置tomcat
查看>>
Python基础
查看>>
springboot加载顺序
查看>>
python chapter 学习之序列
查看>>
我的友情链接
查看>>
Linux下如何知道自己外网的IP
查看>>
GlusterFS的基础应用
查看>>
DRBD+Heartbeat
查看>>
Ubuntu下vsftpd安装和配置
查看>>
IT运维之Linux服务器监控方案
查看>>
ORA-09925: Unable to create audit trail file Linux-x86_64
查看>>
安全存储专家usse
查看>>
MySQL数值类型
查看>>
TCP、UDP下的套接字编程
查看>>
jboss7-的默认系统日志
查看>>