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 相关文章推荐
wxPython事件驱动实例详解
Sep 28 Python
Python实现去除代码前行号的方法
Mar 10 Python
Java实现的执行python脚本工具类示例【使用jython.jar】
Mar 29 Python
Scrapy基于selenium结合爬取淘宝的实例讲解
Jun 13 Python
Python基于SMTP协议实现发送邮件功能详解
Aug 14 Python
详解Python中的type和object
Aug 15 Python
Python实现的对本地host127.0.0.1主机进行扫描端口功能示例
Feb 15 Python
用Python做一个久坐提醒小助手的示例代码
Feb 10 Python
pytorch进行上采样的种类实例
Feb 18 Python
使用Python打造一款间谍程序的流程分析
Feb 21 Python
工程师必须了解的LRU缓存淘汰算法以及python实现过程
Oct 15 Python
Python基础学习之奇异的GUI对话框
May 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
自己在做项目过程中学到的PHP知识收集
2012/08/20 PHP
Yii中Model(模型)的创建及使用方法
2015/12/28 PHP
又一个图片自动缩小的JS代码
2007/03/10 Javascript
jquery中的事件处理详细介绍
2013/06/24 Javascript
Javascript实现多彩雪花从天降散落效果的方法
2015/02/02 Javascript
js通过iframe加载外部网页的实现代码
2015/04/05 Javascript
jquery实现带渐变淡入淡出并向右依次展开的多级菜单效果实例
2015/08/22 Javascript
jQuery简单实现仿京东商城的左侧菜单效果代码
2015/09/09 Javascript
jQuery+json实现的简易Ajax调用实例
2015/12/14 Javascript
基于JavaScript实现移除(删除)数组中指定元素
2016/01/04 Javascript
Extjs 点击复选框在表格中增加相关信息行
2016/07/12 Javascript
详解Javascript ES6中的箭头函数(Arrow Functions)
2016/08/24 Javascript
JavaScript Math对象和调试程序的方法分析
2019/05/13 Javascript
微信小程序云开发 生成带参小程序码流程
2019/05/18 Javascript
vue-cli3配置与跨域处理方法
2019/08/17 Javascript
VSCode写vue项目一键生成.vue模版,修改定义其他模板的方法
2020/04/17 Javascript
python通过zlib实现压缩与解压字符串的方法
2014/11/19 Python
Django中的Signal代码详解
2018/02/05 Python
python networkx 根据图的权重画图实现
2019/07/10 Python
python将字母转化为数字实例方法
2019/10/04 Python
Python unittest框架操作实例解析
2020/04/13 Python
HTML5时代CSS设置漂亮字体取代图片
2014/09/04 HTML / CSS
HTML5 Canvas+JS控制电脑或手机上的摄像头实例
2014/05/03 HTML / CSS
adidas澳大利亚官方网站:adidas Australia
2018/04/15 全球购物
英国在线购买马术服装:EQUUS
2019/07/12 全球购物
输入N,打印N*N矩阵
2012/02/20 面试题
Solaris操作系统的线程机制
2012/12/23 面试题
贷款委托书怎么写
2014/08/02 职场文书
七一建党节演讲稿
2014/09/11 职场文书
音乐教育专业自荐信
2014/09/18 职场文书
交通事故赔偿协议书怎么写
2014/10/04 职场文书
不同意离婚答辩状
2015/05/22 职场文书
业务员年终工作总结2015
2015/05/28 职场文书
个人工作决心书
2015/09/22 职场文书
如何用Node.js编写内存效率高的应用程序
2021/04/30 Javascript
python四种出行路线规划的实现
2021/06/23 Python