Python学习笔记(六)多进程实现并发服务器
2014-11-13 23:07
846 查看
这个相对于多进程更加简单,每accept一个新的连接就创建一个新的线程。代码如下:
注意这里的thread不能进行join,否则会阻塞主线程,丧失并发能力。
另外,python中的线程不需要进行detach。
# coding: utf-8 import socket import sys import errno import threading from time import ctime class 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。
相关文章推荐
- python web服务器学习笔记(五) 并发尝试之popen原理探究
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 用C++/lua/python/bash的四重实现(4)二分搜索算法
- python学习笔记——实现收发Email
- python学习笔记四(python多进程)
- Python学习笔记——多线程,多进程
- python学习笔记(1)----并发与IO
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 用C++/lua/python/bash的四重实现(5)欧几里得算法欧几里得算法求最大公约数
- 《 Head First 》学习笔记:工厂模式 和 抽象模式 (python实现)
- python学习笔记:泊松分布和负指数分布随机数的python实现
- python笔记-Twisted 实现简单的服务器客户端程序
- 几种并发服务器模型的实现:多线程,多进程,select,poll,epoll
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 用C++/lua/python/bash的四重实现(7)习题2.8 随机数组的三种生成算法
- python网络编程学习笔记(3):socket网络服务器
- 学习笔记之 Servlet容器服务器原理 简易实现代码
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 用C++/lua/python/bash的四重实现(2) IntCell类
- python学习(1)--实现简单的服务器与客户端
- 《 Head First 》学习笔记:策略模式 (python实现)
- XMLRPC 学习笔记(一)- Python 实现
- python网络编程学习笔记(三):socket网络服务器
- python3 学习-1(实现简单的服务器与客户端)