最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

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

来源:动视网 责编:小采 时间:2020-11-27 14:29:49
文档

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

python高并发异步服务器核心库forkcore使用方法:1 拷贝下面的代码到一个文件,并命名为forkcore.py 代码如下:import osimport threadingimport selectimport socket class ds_forkcore(object): #async IO(epoll) def ds_epoll(self): epoll=select.epo
推荐度:
导读python高并发异步服务器核心库forkcore使用方法:1 拷贝下面的代码到一个文件,并命名为forkcore.py 代码如下:import osimport threadingimport selectimport socket class ds_forkcore(object): #async IO(epoll) def ds_epoll(self): epoll=select.epo


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高并发异步服务器核心库forkcore使用方法:1 拷贝下面的代码到一个文件,并命名为forkcore.py 代码如下:import osimport threadingimport selectimport socket class ds_forkcore(object): #async IO(epoll) def ds_epoll(self): epoll=select.epo
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top