Python语言技术文档

微信小程序技术文档

php语言技术文档

jsp语言技术文档

asp语言技术文档

C#/.NET语言技术文档

html5/css技术文档

javascript

点击排行

python高并发异步服务器核心库forkcore使用方法

来源:中文源码网    浏览:181 次    日期:2024-05-15 06:44:41
【下载文档:  python高并发异步服务器核心库forkcore使用方法.txt 】


python高并发异步服务器核心库forkcore使用方法
1 拷贝下面的代码到一个文件,并命名为forkcore.py
复制代码 代码如下:import osimport threadingimport selectimport socket
class ds_forkcore(object): #async IO(epoll) def ds_epoll(self): epoll=select.epoll() epoll.register(self.s.fileno(),select.EPOLLIN|select.EPOLLET) while 1: epoll_list=epoll.poll() for fd,_events in epoll_list: if fd==self.s.fileno(): conn,addr=self.s.accept() print "Current process's pid is "+str(os.getpid()) self.worker(conn,addr) #multi_thread def ds_thread(self,thread_num=100): for _ in range(0,thread_num): t=threading.Thread(target=self.ds_epoll) t.setDaemon(1) t.start() t.join() #multi_process def ds_process(self,child_process_num=8): pid=os.getpid() print "Main process start, pid is "+str(pid) for _ in range(0,child_process_num): if pid==os.getpid(): if os.fork(): pass else: print "Worker process start, pid is "+str(os.getpid()) self.ds_thread() #init function def __init__(self,worker,port=3333): s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) s.bind(("",port)) s.listen(50000) self.s=s self.worker=worker self.ds_process()
2 编写自己的代码
1> 导入forkcore库。
2> 定义worker函数,worker函数需要两个参数,conn代表客户端连接的socket,addr是(ip,port)的元组。
3> 直接使用forkcore.ds_forecore(worker,port=5555)即可,port用于指定监听端口。
复制代码 代码如下:import forkcore
if __name__=="__main__": def worker(conn,addr): print "Message from ("+str(addr[0])+":"+str(addr[1])+"): "+conn.recv(1024)[0:-1] forkcore.ds_forkcore(worker,port=5555)
注:需要linux 2.6以上的内核

相关内容