Python的Gevent框架的多进程模式

本文探讨了如何使用Gevent框架在Python中实现多进程模式以利用多核资源,解决GIL限制。通过gevent.fork代替os.fork,结合multiprocessing模块,实现了并行处理,提高性能。在测试环境中,随着进程数增加,每秒处理的请求数呈现几乎成倍增长。
摘要由CSDN通过智能技术生成

Gevent框架性能很高,但一直以来我都纠结在python的GIL模型导致的线程不能抢占多核资源上面。

而启动多个python进程的这种利用多核的模式又需要增加前端负载均衡,比如lvs那些,有些麻烦。

multiprocessing模块和os.fork又会使得两个进程重复在事件核心注册accept事件,导致文件句柄重复的异常。

至于一个进程监听,多个进程处理的模式,监听的那个进程资源又不好分配——是独立分配一个核心还是不单独分配呢?如果单独分配,连接量小的时候就浪费了一个核心,如果不分配,连接量大的时候cpu又会频繁切换进程。

昨日才发现原来gevent是可以很轻松地将它的网络模型分布到多个进程并行处理的。

秘诀就在gevent.fork()。

以前想当然地认为gevent.fork只是greenlet.spawn的一个包装,原来不是这样。gevent.fork能替代os.fork,不仅会启动一个新的进程,而且能将它们底层的事件处理沟通起来,进行并行处理。

import gevent
from gevent.server import StreamServer

def ea
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值