手机
当前位置:查字典教程网 >脚本专栏 >python >python高并发异步服务器核心库forkcore使用方法
python高并发异步服务器核心库forkcore使用方法
摘要:1拷贝下面的代码到一个文件,并命名为forkcore.py复制代码代码如下:importosimportthreadingimportsel...

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高并发异步服务器核心库forkcore使用方法】相关文章:

python实现linux服务器批量修改密码并生成execl

在 Django/Flask 开发服务器上使用 HTTPS

python操作MySQL数据库具体方法

python中的sort方法使用详解

python实现问号表达式(?)的方法

python装饰器使用方法实例

python读取注册表中值的方法

python批量导出导入MySQL用户的方法

python中的yield使用方法

python定时采集摄像头图像上传ftp服务器功能实现

精品推荐
分类导航