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 import自定义模块方法
Feb 12 Python
Python字符串和文件操作常用函数分析
Apr 08 Python
Python部署web开发程序的几种方法
May 05 Python
Python通过paramiko远程下载Linux服务器上的文件实例
Dec 27 Python
pytorch数据预处理错误的解决
Feb 20 Python
python闭包、深浅拷贝、垃圾回收、with语句知识点汇总
Mar 11 Python
Python安装并操作redis实现流程详解
Oct 13 Python
Windows环境下Python3.6.8 importError: DLLload failed:找不到指定的模块
Nov 01 Python
详解python定时简单爬取网页新闻存入数据库并发送邮件
Nov 27 Python
python 基于PYMYSQL使用MYSQL数据库
Dec 24 Python
教你如何用Python实现人脸识别(含源代码)
Jun 23 Python
Python中的 No Module named ***问题及解决
Jul 23 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
mayfish 数据入库验证代码
2010/04/30 PHP
PHP+jQuery 注册模块的改进(三):更新到Smarty3.1
2014/10/14 PHP
smarty内置函数foreach用法实例
2015/01/22 PHP
微信获取用户地理位置信息的原理与步骤
2015/11/12 PHP
Zend Framework分发器用法示例
2016/12/11 PHP
PHP实现重载的常用方法实例详解
2017/10/18 PHP
简短几句jquery代码的实现一个图片向上滚动切换
2011/09/02 Javascript
分享一个自定义的console类 让你不再纠结JS中的调试代码的兼容
2012/04/20 Javascript
JS循环遍历JSON数据的方法
2014/07/08 Javascript
当前流行的JavaScript代码风格指南
2014/09/10 Javascript
JS模拟简易滚动条效果代码(附demo源码)
2016/04/05 Javascript
angular和BootStrap3实现购物车功能
2017/01/25 Javascript
AngularJS实现路由实例
2017/02/12 Javascript
原生JS实现圣旨卷轴展开效果
2017/03/06 Javascript
Vue.js tab实现选项卡切换
2017/05/16 Javascript
微信小程序 地图map实例详解
2017/06/07 Javascript
vue+swiper实现侧滑菜单效果
2017/12/28 Javascript
AngularJS监听ng-repeat渲染完成的两种方法
2018/01/16 Javascript
jQuery实现的响应鼠标移动方向插件用法示例【附源码下载】
2018/08/28 jQuery
addEventListener()和removeEventListener()追加事件和删除追加事件
2020/12/04 Javascript
Python实现按逗号分隔列表的方法
2018/10/23 Python
Python closure闭包解释及其注意点详解
2019/08/28 Python
python sklearn常用分类算法模型的调用
2019/10/16 Python
python用requests实现http请求代码实例
2019/10/31 Python
海淘母婴商城:国际妈咪
2016/07/23 全球购物
美国著名童装品牌:OshKosh B’gosh
2016/08/05 全球购物
洲际酒店集团美国官网:IHG美国
2017/11/16 全球购物
彪马土耳其官网:PUMA土耳其
2019/07/14 全球购物
应聘教师推荐信
2013/10/31 职场文书
五水共治一句话承诺
2014/05/30 职场文书
网球场地租赁协议范本
2014/10/07 职场文书
出差报告范文
2014/11/06 职场文书
校本课程教学计划
2015/01/19 职场文书
2015年教师国培感言
2015/08/01 职场文书
2016年优秀团支部事迹材料
2016/02/26 职场文书
MySQL七种JOIN类型小结
2021/10/24 MySQL