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 相关文章推荐
sqlalchemy对象转dict的示例
Apr 22 Python
简单的python后台管理程序
Apr 13 Python
Python实现抢购IPhone手机
Feb 07 Python
用python代码将tiff图片存储到jpg的方法
Dec 04 Python
Python lxml解析HTML并用xpath获取元素的方法
Jan 02 Python
selenium+python自动化测试环境搭建步骤
Jun 03 Python
django-rest-swagger的优化使用方法
Aug 29 Python
Python检查图片是否损坏及图片类型是否正确过程详解
Sep 30 Python
Python ATM功能实现代码实例
Mar 19 Python
python中执行smtplib失败的处理方法
Jul 01 Python
查找适用于matplotlib的中文字体名称与实际文件名对应关系的方法
Jan 05 Python
MATLAB 如何求取离散点的曲率最大值
Apr 16 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
IIS+PHP+MySQL+Zend配置 (视频教程)
2006/12/13 PHP
深入解析PHP内存管理之谁动了我的内存
2013/06/20 PHP
用PHP和Shell写Hadoop的MapReduce程序
2014/04/15 PHP
ThinkPHP模板判断输出Defined标签用法详解
2014/06/30 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
2017/09/20 PHP
详解PHP序列化和反序列化原理
2018/01/15 PHP
PHP7 字符串处理机制修改
2021/03/09 PHP
location.href 在IE6中不跳转的解决方法与推荐使用代码
2010/07/08 Javascript
jquery实现的让超出显示范围外的导航自动固定屏幕最顶上
2011/09/22 Javascript
获取非最后一列td值并将title设为该值的方法
2013/10/30 Javascript
js实现可拖动DIV的方法
2013/12/17 Javascript
原生js实现jquery函数animate()动画效果的简单实例
2016/08/21 Javascript
jQuery实现模拟flash头像裁切上传功能示例
2016/12/11 Javascript
Javascript之图片的延迟加载的实例详解
2017/07/24 Javascript
二维码图片生成器QRCode.js简单介绍
2017/08/18 Javascript
vue webpack打包优化操作技巧
2018/02/22 Javascript
vue采用EventBus实现跨组件通信及注意事项小结
2018/06/14 Javascript
vue用Object.defineProperty手写一个简单的双向绑定的示例
2018/07/09 Javascript
AngularJS $http post 传递参数数据的方法
2018/10/09 Javascript
javascript的this关键字详解
2019/05/20 Javascript
JS实现简单随机3D骰子
2019/10/24 Javascript
[38:21]2014 DOTA2国际邀请赛中国区预选赛5.21 TongFu VS LGD-CDEC
2014/05/22 DOTA
[35:27]完美世界DOTA2联赛循环赛 GXR vs FTD BO2第二场 10.29
2020/10/29 DOTA
[40:53]完美世界DOTA2联赛PWL S3 Magma vs DLG 第二场 12.18
2020/12/20 DOTA
[01:06:43]完美世界DOTA2联赛PWL S3 PXG vs GXR 第二场 12.19
2020/12/24 DOTA
Python实用工具FuckIt.py介绍
2019/07/02 Python
基于Python的一个自动录入表格的小程序
2020/08/05 Python
HTML5实现应用程序缓存(Application Cache)
2020/06/16 HTML / CSS
英国Zoro工具:手动工具,电动工具和个人防护用品
2016/11/02 全球购物
美国在线面料商店:Online Fabric Store
2018/07/26 全球购物
Timberland法国官网:购买靴子、鞋子、衣服、夹克和配饰
2019/11/30 全球购物
实习鉴定评语
2014/01/19 职场文书
考试作弊检讨书怎么写?
2014/12/21 职场文书
2015年安全生产管理工作总结
2015/05/25 职场文书
500字作文之周记
2019/12/13 职场文书
Mybatis-plus在项目中的简单应用
2021/07/01 Java/Android