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

所属分类: 脚本专栏 / python 阅读数: 713
收藏 0 赞 0 分享

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以上的内核

更多精彩内容其他人还在看

使用keras实现非线性回归(两种加激活函数的方式)

这篇文章主要介绍了使用keras实现非线性回归(两种加激活函数的方式),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
收藏 0 赞 0 分享

python线性插值解析

这篇文章主要介绍了python线性插值解析,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Python中flatten( ),matrix.A用法说明

这篇文章主要介绍了Python中flatten( ),matrix.A用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
收藏 0 赞 0 分享

python cv2.resize函数high和width注意事项说明

这篇文章主要介绍了python cv2.resize函数high和width注意事项说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
收藏 0 赞 0 分享

python 图像插值 最近邻、双线性、双三次实例

这篇文章主要介绍了python 图像插值 最近邻、双线性、双三次实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Python-openCV开运算实例

这篇文章主要介绍了Python-openCV开运算实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
收藏 0 赞 0 分享

python使用opencv resize图像不进行插值的操作

这篇文章主要介绍了python使用opencv resize图像不进行插值的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
收藏 0 赞 0 分享

使用Python-OpenCV消除图像中孤立的小区域操作

这篇文章主要介绍了使用Python-OpenCV消除图像中孤立的小区域操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
收藏 0 赞 0 分享

python右对齐的实例方法

在本篇文章里小编给大家整理的是关于python右对齐的实例方法,有需要的朋友们可以学习参考下。
收藏 0 赞 0 分享

python主要用于哪些方向

在本篇文章里小编给大家整理了一篇关于python用于的方向的相关文章,有需要的阅读下吧。
收藏 0 赞 0 分享
查看更多