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


Posted in Python onNovember 26, 2013

1 拷贝下面的代码到一个文件,并命名为forkcore.py

import os
import threading
import select
import 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以上的内核

Python 相关文章推荐
python实现斐波那契递归函数的方法
Sep 08 Python
python中的装饰器详解
Apr 13 Python
Python数据类型学习笔记
Jan 13 Python
Windows下Eclipse+PyDev配置Python+PyQt4开发环境
May 17 Python
python学习 流程控制语句详解
Jun 01 Python
python条件变量之生产者与消费者操作实例分析
Mar 22 Python
python多线程之事件Event的使用详解
Apr 27 Python
python 用lambda函数替换for循环的方法
Jun 09 Python
python多线程共享变量的使用和效率方法
Jul 16 Python
python 实现快速生成连续、随机字母列表
Nov 28 Python
python读取ini配置的类封装代码实例
Jan 08 Python
python通过对字典的排序,对json字段进行排序的实例
Feb 27 Python
跨平台python异步回调机制实现和使用方法
Nov 26 #Python
python连接池实现示例程序
Nov 26 #Python
使用python BeautifulSoup库抓取58手机维修信息
Nov 21 #Python
python BeautifulSoup使用方法详解
Nov 21 #Python
python装饰器使用方法实例
Nov 21 #Python
tornado框架blog模块分析与使用
Nov 21 #Python
python迭代器的使用方法实例
Nov 21 #Python
You might like
ADODB的数据库封包程序库
2006/12/31 PHP
Linux Apache PHP Oracle 安装配置(具体操作步骤)
2013/06/17 PHP
YII模块实现绑定二级域名的方法
2014/07/09 PHP
php清空(删除)指定目录下的文件,不删除目录文件夹的实现代码
2014/09/04 PHP
php session的应用详细介绍
2017/03/22 PHP
jscript之Read an Excel Spreadsheet
2007/06/13 Javascript
发布一个基于javascript的动画类 Fx.js
2010/11/05 Javascript
再谈javascript面向对象编程
2012/03/18 Javascript
javascript分页代码(当前页码居中)
2012/09/20 Javascript
Underscore.js常用方法总结
2015/02/28 Javascript
vue.js入门教程之计算属性
2016/09/01 Javascript
微信+angularJS的SPA应用中用router进行页面跳转,jssdk校验失败问题解决
2016/09/09 Javascript
jQuery实现的超链接提示效果示例【附demo源码下载】
2016/09/09 Javascript
jQuery实现动态文字搜索功能
2017/01/05 Javascript
jQuery表单插件ajaxForm实例详解
2017/01/17 Javascript
jQuery Pagination分页插件使用方法详解
2017/02/28 Javascript
详解如何使用node.js的开发框架express创建一个web应用
2018/12/20 Javascript
vue如何截取字符串
2019/05/06 Javascript
Python压缩和解压缩zip文件
2015/02/14 Python
Python实现的数据结构与算法之链表详解
2015/04/22 Python
深入解析Python中函数的参数与作用域
2016/03/20 Python
详解Python核心编程中的浅拷贝与深拷贝
2018/01/07 Python
新手常见6种的python报错及解决方法
2018/03/09 Python
只需7行Python代码玩转微信自动聊天
2019/01/27 Python
Python自动采集微信联系人的实现示例
2020/02/28 Python
windows下的pycharm安装及其设置中文菜单
2020/04/23 Python
python中shell执行知识点
2020/05/06 Python
python使用QQ邮箱实现自动发送邮件
2020/06/22 Python
python定义类的简单用法
2020/07/24 Python
Python包资源下载路径报404解决方案
2020/11/05 Python
爱尔兰电脑、家电和家具购物网站:Buy It Direct
2019/07/09 全球购物
香港百佳网上超级市场:PARKNSHOP.com
2020/06/10 全球购物
事业单位接收函
2014/01/10 职场文书
婚内房产协议书范本
2014/10/02 职场文书
教师节随笔
2015/08/15 职场文书
解决mysql的int型主键自增问题
2021/07/15 MySQL