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的Flask框架结合MySQL写一个内存监控程序
Nov 07 Python
Python发送form-data请求及拼接form-data内容的方法
Mar 05 Python
Python 含参构造函数实例详解
May 25 Python
Python 多线程的实例详解
Sep 07 Python
Python FTP两个文件夹间的同步实例代码
May 25 Python
python 3.7.0 安装配置方法图文教程
Aug 27 Python
使用Python处理BAM的方法
Sep 28 Python
python3 实现对图片进行局部切割的方法
Dec 05 Python
对pandas读取中文unicode的csv和添加行标题的方法详解
Dec 12 Python
django的autoreload机制实现
Jun 03 Python
Python制作数据预测集成工具(值得收藏)
Aug 21 Python
Python 调用 ES、Solr、Phoenix的示例代码
Nov 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
利用PHP实现与ASP Banner组件相似的类
2006/10/09 PHP
php中json_encode UTF-8中文乱码的更好解决方法
2014/09/28 PHP
PHP使用xmllint命令处理xml与html的方法
2014/12/15 PHP
Java中final关键字详解
2015/08/10 PHP
JS画5角星方法介绍
2013/09/17 Javascript
jQuery表格插件datatables用法总结
2014/09/05 Javascript
2则自己编写的jQuery特效分享
2015/02/26 Javascript
Sublime Text 3常用插件及安装方法
2015/12/16 Javascript
基于jQuery的Web上传插件Uploadify使用示例
2016/05/19 Javascript
jQuery特殊符号转义的实现
2016/11/30 Javascript
vue中appear的用法
2017/08/17 Javascript
JS获取url参数,JS发送json格式的POST请求方法
2018/03/29 Javascript
JavaScript捕捉事件和阻止冒泡事件实例分析
2018/08/03 Javascript
在vue-cli的组件模板里使用font-awesome的两种方法
2018/09/28 Javascript
微信小程序开发之左右分栏效果的实例代码
2019/05/20 Javascript
vue登录以及权限验证相关的实现
2019/10/25 Javascript
Vue+ElementUI table实现表格分页
2019/12/14 Javascript
vue 使用饿了么UI仿写teambition的筛选功能
2021/03/01 Vue.js
[03:49]DOTA2英雄基础教程 光之守卫
2014/01/14 DOTA
[03:02]生活中的Dendi之野外度假篇
2016/08/09 DOTA
Python-接口开发入门解析
2019/08/01 Python
Pycharm创建项目时如何自动添加头部信息
2019/11/14 Python
PyTorch之nn.ReLU与F.ReLU的区别介绍
2020/06/27 Python
python 实现关联规则算法Apriori的示例
2020/09/30 Python
用pushplus+python监控亚马逊到货动态推送微信
2021/01/29 Python
python lambda的使用详解
2021/02/26 Python
使用SVG实现提示框功能的示例代码
2020/06/05 HTML / CSS
英国网上香水店:Fragrance Direct
2016/07/20 全球购物
ZINVO手表官网:男士和女士手表
2019/03/10 全球购物
安全协议书
2014/04/23 职场文书
银行竞聘演讲稿范文
2014/04/23 职场文书
党员公开承诺书内容
2014/05/20 职场文书
上课迟到检讨书300字
2014/10/15 职场文书
三峡人家导游词
2015/01/31 职场文书
2015年七一建党节慰问信
2015/03/23 职场文书
2015年大班保育员工作总结
2015/05/18 职场文书