python异步高并发_python高并发异步服务器核心库forkcore使用方法
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异步高并发_python高并发异步服务器核心库forkcore使用方法相关推荐
- python 高级面试题_Python高阶面试题
3.mysql事务的4个层次: 数据库事务的隔离级别有4个,由低到高依次为Read uncommitted(未授权读取.读未提交).Read committed(授权读取.读提交).Repeatabl ...
- python对操作系统要求_python之--并发编程__操作系统
操作系统 1.操作系统的发展史 1)手工操作 -- 穿孔卡片 1946年第一台计算机诞生--20世纪50年代中期,计算机工作还在采用手工操作方式.此时还没有操作系统的概念. 程序员将对应于程序和数据的 ...
- python websocket异步高并发_python – WebSocket聊天异步示例崩溃
我一直试图在Apple Mac上运行这里提供的websocket聊天示例. https://github.com/unbit/uwsgi/blob/master/tests/websockets_ch ...
- python并发处理list数据_python之并发基础(进程)
今日内容: 操作系统发展史 多道技术 进程理论 开启进程的两种方式 进程对象的join方法 进程之间数据的相互隔离 进程对象的其他方法 僵尸进程和孤儿进程 守护进程 互斥锁 队列介绍 进程间通信IPC ...
- python高阶_Python高阶学习
学习目录阿力阿哩哩:深度学习 | 学习目录zhuanlan.zhihu.com 上一期我们讲到阿力阿哩哩:Python进阶学习zhuanlan.zhihu.com 3.4 Python高阶学习 3 ...
- python按照绝对值排序_Python高阶函数sorted排序
sorted用法 sorted是Python提供的功能强大的排序函数.满足字符,数字等排序要求. 对数字进行排序: list = [-12, -2, -24, 20, 39, 10]; print(s ...
- python 数据清洗 豆瓣电影_Python高阶操作--关于数据清洗
基于pandas的数据清洗: 处理空值操作: isnull :df.isnull()--检测出原始数据中哪些行中存在空值 notnull: any:可以帮助我们检测df中哪些行列中存在空值,必须配合i ...
- python tcp服务器并发_python tcp并发服务器
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
- python获取摄像头型号_python opencv设置摄像头分辨率以及各个参数的方法_python
下面就为大家分享一篇python opencv设置摄像头分辨率以及各个参数的方法,具有很好的参考价值,希望对大家有所帮助.一起过来看看吧 1,为了获取视频,你应该创建一个 VideoCapture 对 ...
最新文章
- String与StringBuffer的区别
- 精彩回顾丨神策 2020 数据驱动用户大会亮点汇总
- AI理论知识基础(22)-逻辑斯蒂映射-伪随机数
- python3 for_python3 for循环-range遍历
- springmvc接收日期字段处理方式
- PHP读取数据库并按照中文名称进行排序实现代码
- 文件压缩 Huffman编码 (java)
- “双击Pycharm无响应”解决方案
- 如何快速地真正的融入IT行业
- 苹果怎么改字体_截图里的文字要改,字体怎么做到一模一样?
- Can't connect to MySQL server on 'xxx.xxx.xxx.xxx' (10061),错误代码2003
- 北京国家会计学院聂兴凯:用友BIP事项会计助力企业迈入智能会计时代
- aptx与ldac音质区别_搞清楚LDAC、aptX这些蓝牙编码都有啥区别
- bootstrap-datetimepicker时间控件
- 在腾讯,我们如何做 Code Review
- X版Dr.COM校园网使用路由器上网
- 打麻将技巧测试软件apk,学会这4招打麻将技巧,以后打麻将想不赢钱都难
- 记一次完整的新浪云部署nodejs项目上线完整流程及填坑处理!
- Python matplotlib 批量绘图内存不够问题(Out of memory)
- Linux教程【一】