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使用方法相关推荐

  1. python 高级面试题_Python高阶面试题

    3.mysql事务的4个层次: 数据库事务的隔离级别有4个,由低到高依次为Read uncommitted(未授权读取.读未提交).Read committed(授权读取.读提交).Repeatabl ...

  2. python对操作系统要求_python之--并发编程__操作系统

    操作系统 1.操作系统的发展史 1)手工操作 -- 穿孔卡片 1946年第一台计算机诞生--20世纪50年代中期,计算机工作还在采用手工操作方式.此时还没有操作系统的概念. 程序员将对应于程序和数据的 ...

  3. python websocket异步高并发_python – WebSocket聊天异步示例崩溃

    我一直试图在Apple Mac上运行这里提供的websocket聊天示例. https://github.com/unbit/uwsgi/blob/master/tests/websockets_ch ...

  4. python并发处理list数据_python之并发基础(进程)

    今日内容: 操作系统发展史 多道技术 进程理论 开启进程的两种方式 进程对象的join方法 进程之间数据的相互隔离 进程对象的其他方法 僵尸进程和孤儿进程 守护进程 互斥锁 队列介绍 进程间通信IPC ...

  5. python高阶_Python高阶学习

    学习目录阿力阿哩哩:深度学习 | 学习目录​zhuanlan.zhihu.com 上一期我们讲到阿力阿哩哩:Python进阶学习​zhuanlan.zhihu.com 3.4 Python高阶学习 3 ...

  6. python按照绝对值排序_Python高阶函数sorted排序

    sorted用法 sorted是Python提供的功能强大的排序函数.满足字符,数字等排序要求. 对数字进行排序: list = [-12, -2, -24, 20, 39, 10]; print(s ...

  7. python 数据清洗 豆瓣电影_Python高阶操作--关于数据清洗

    基于pandas的数据清洗: 处理空值操作: isnull :df.isnull()--检测出原始数据中哪些行中存在空值 notnull: any:可以帮助我们检测df中哪些行列中存在空值,必须配合i ...

  8. python tcp服务器并发_python tcp并发服务器

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  9. python获取摄像头型号_python opencv设置摄像头分辨率以及各个参数的方法_python

    下面就为大家分享一篇python opencv设置摄像头分辨率以及各个参数的方法,具有很好的参考价值,希望对大家有所帮助.一起过来看看吧 1,为了获取视频,你应该创建一个 VideoCapture 对 ...

最新文章

  1. String与StringBuffer的区别
  2. 精彩回顾丨神策 2020 数据驱动用户大会亮点汇总
  3. AI理论知识基础(22)-逻辑斯蒂映射-伪随机数
  4. python3 for_python3 for循环-range遍历
  5. springmvc接收日期字段处理方式
  6. PHP读取数据库并按照中文名称进行排序实现代码
  7. 文件压缩 Huffman编码 (java)
  8. “双击Pycharm无响应”解决方案
  9. 如何快速地真正的融入IT行业
  10. 苹果怎么改字体_截图里的文字要改,字体怎么做到一模一样?
  11. Can't connect to MySQL server on 'xxx.xxx.xxx.xxx' (10061),错误代码2003
  12. 北京国家会计学院聂兴凯:用友BIP事项会计助力企业迈入智能会计时代
  13. aptx与ldac音质区别_搞清楚LDAC、aptX这些蓝牙编码都有啥区别
  14. bootstrap-datetimepicker时间控件
  15. 在腾讯,我们如何做 Code Review
  16. X版Dr.COM校园网使用路由器上网
  17. 打麻将技巧测试软件apk,学会这4招打麻将技巧,以后打麻将想不赢钱都难
  18. 记一次完整的新浪云部署nodejs项目上线完整流程及填坑处理!
  19. Python matplotlib 批量绘图内存不够问题(Out of memory)
  20. Linux教程【一】

热门文章

  1. 消费金融盈利分析及风控能力建设
  2. [后缀数组] Luogu P5028 Annihilate
  3. 暑假周进度总结报告4
  4. python scrapy 基本操作演示代码
  5. 线程池----合理的设置大小
  6. Python内置函数(37)——sorted
  7. hdu3468 Treasure Hunting 二分匹配
  8. 2106. [NOIP2015] 斗地主
  9. SYBASE性能优化
  10. JZOJ 3426. 封印一击