返回顶部
首页 > 资讯 > 精选 >Gevent满足安装使用
  • 496
分享到

Gevent满足安装使用

2023-06-03 01:06:59 496人浏览 泡泡鱼
摘要

这篇文章主要介绍“Gevent满足安装使用”,在日常操作中,相信很多人在Gevent满足安装使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Gevent满足安装使用”的疑惑有所帮助!接下来,请跟着小编一起来

这篇文章主要介绍“Gevent满足安装使用”,在日常操作中,相信很多人在Gevent满足安装使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Gevent满足安装使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

Gevent是一个基于greenlet的python并发框架,以微线程greenlet为核心,使用了epoll事件监听机制以及诸多其他优化而变得高效。

于greenlet、eventlet相比,性能略低,但是它封装的api非常完善,最赞的是提供了一个monkey类,可以将现有基于Python线程直接转化为greenlet,相当于proxy了一下(打了patch)。

安装

Gevent依赖libevent和greenlet,需要分别安装。

Python

#libevent 1.4.x

sudo apt-get install libevent-dev

#python_dev

sudo apt-get install python-dev

#easy_install

wget -q Http://peak.telecommUnity.com/dist/ez_setup.py

sudo python ./ez_setup.py

#greenlet

wget http://pypi.python.org/packages/source/g/greenlet/greenlet-0.3.1.tar.gz#md5=8d75d7f3f659e915e286e1b0fa0e1c4d

tar -xzvf greenlet-0.3.1.tar.gz

cd greenlet-0.3.1/

sudo python setup.py install

#gevent

wget http://pypi.python.org/packages/source/g/gevent/gevent-0.13.6.tar.gz#md5=7c836ce2315d44ba0af6134efbcd38c9

tar -xzvf gevent-0.13.6.tar.gz

cd gevent-0.13.6/

sudo python setup.py install

至此,安装完毕。

测试代码:XML-rpc

这里必须使用支持线程的XML-RPC,否则无法发挥gevent的优势!

传统版本:
需要说明的是,这个并很多资料描述的非单线程,而是一个select版本,所以某些时候比线程版本性能好。

Python

from SocketServer import ThreadingMixIn

from SimpleXMLRPCServer import SimpleXMLRPCServer, SimpleXMLRPCRequestHandler

from SocketServer import tcpServer

TCPServer.request_queue_size = 10000

#Logic function

def add(a, b):

    return a + b

#Logic function 2

def gen(n):

    return '0' * n

#create server

server = SimpleXMLRPCServer(('', 8080), SimpleXMLRPCRequestHandler,False)

server.reGISter_function(add, "add")

server.register_function(gen, "gen")

server.serve_forever()


线程版本:3、测试客户端

Python

from xmlrpclib import ServerProxy

#Execute RPC

server = ServerProxy("http://localhost:8080")

#print server.add(3,5)

print server.gen(2048)

 4、gevent的monkey包装后的XML-RPC

monkey是非入侵式的patch,只需要显示调用你需要patch的东西就行了,别看我用了三行,其实可以patch_all()的

Python

from SocketServer import ThreadingMixIn

from SimpleXMLRPCServer import SimpleXMLRPCServer, SimpleXMLRPCRequestHandler

from gevent import monkey

#Threaded XML-RPC && Monkey Patch

monkey.patch_socket() #Just 2 line!

monkey.patch_thread() #Just 3 line!

monkey.patch_select() #Just 3 line!

class TXMLRPCServer(ThreadingMixIn, SimpleXMLRPCServer): pass

#Logic function

def add(a, b):

    return a + b

#Logic function 2

def gen(n):

    return "0" * n

#create server

server = TXMLRPCServer(('', 8080), SimpleXMLRPCRequestHandler)

server.register_function(add, "add")

server.register_function(gen, "gen")

server.serve_forever()

测试结果

现在只有一台机器,下午去实验室两台机器跑了以后,放上结果。对gevent还是比较寄希望的,希望不要太差。。

客户端的特殊配置:
echo -e ‘1024t65535’ | sudo tee /proc/sys/net/ipv4/ip_local_port_range
echo 1 | sudo tee /proc/sys/net/ipv4/tcp_tw_recycle
echo 1 | sudo tee /proc/sys/net/ipv4/tcp_syncookies
ulimit -n 10240

服务器端的特殊配置:
echo “10152 65535″ > /proc/sys/net/ipv4/ip_local_port_range
echo 1 | sudo tee /proc/sys/net/ipv4/tcp_tw_recycle
sysctl -w fs.file-max=128000
sysctl -w net.ipv4.tcp_keepalive_time=300
sysctl -w net.core.somaxconn=250000
sysctl -w net.ipv4.tcp_max_syn_backlog=2500
sysctl -w net.core.netdev_max_backlog=2500
ulimit -n 10240

然后说让大家比较失望的结果:测试效果非常失败,经常出现异常情况,根据我的分析是默认的XML-RPC没有backlog(或者默认太低),导致压力一大,就会fail accept,从而导致RESET(connection refused)。厦门叉车租赁公司
所以说对monkey的patch不要抱太大希望,他是和原代码密切相关的。

补充:已经找到修改默认backlog的方法,如下:

Python

from SocketServer import TCPServer

#修改这个全局变量即可

TCPServer.request_queue_size = 5000


当然测试数据说明,不要过分迷恋monkey,那只是个传说~

测试数据:
c=500 n=50000
默认:2845/s, 8M
多线程:1966/s, 51M
gevent:1888/s, 11M

c=1000 n=100000
默认:3096/s, 8M
多线程:1895/s, 52M
gevent:1936/s, 11M

c=5000 n=500000
默认:3009/s, 8M
多线程:失败,无法创建新线程
gevent:1988/s, 11M

c=10000 n=1000000
默认:2883/s, 8M
多线程:失败,无法创建新线程
gevent:1992/s, 20M

monkey的优点就是:省内存,我是和线程的相比。
我仔细的分析了一下,XML-RPC使用CPU的比例还是很大的,相比较于直接http的计算,xmlrpc还是属于cpu密集型。
在这种CPU占用很高,需要反复争夺微greenlet的情况下,gevent并不具有优势。
或者从另一种角度说,测试机不够强大,喂不饱gevent(可以看到,随着并发线程升高,gevent的性能不降反升,而默认的则在不断下降)

到此,关于“Gevent满足安装使用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: Gevent满足安装使用

本文链接: https://lsjlt.com/news/232091.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Gevent满足安装使用
    这篇文章主要介绍“Gevent满足安装使用”,在日常操作中,相信很多人在Gevent满足安装使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Gevent满足安装使用”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-03
  • tensorflow安装要满足哪些要求
    要安装TensorFlow,您需要满足以下要求: 确保您的计算机系统满足TensorFlow的最低要求,例如操作系统、处理器和内存...
    99+
    2024-04-02
  • win8安装11gR2[INS-13001] 环境不满足最低要求
    win8.1 x64安装Oracle Database 11g R2的时候报这种错误[INS-13001]是因为官方发行R2版本时win8.1还没有发行,所以不能很好的支持,点击是继续安装不会有任何影响,但...
    99+
    2024-04-02
  • Python的网络编程库Gevent的安装及使用技巧
    安装(以CentOS为例) gevent依赖libevent和greenlet: 1.安装libevent 直接yum install libevent 然后配置python的安装 2.安装easy_ins...
    99+
    2022-06-04
    使用技巧 网络编程 Python
  • react中满足对自己的组件使用setFieldsValue
    这篇文章主要介绍“react中满足对自己的组件使用setFieldsValue”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“react中满足对自己的组件使用setFieldsValue”文章能帮助大...
    99+
    2023-07-05
  • Python使用gevent实现协程
      Python中多任务的实现可以使用进程和线程,也可以使用协程。  一、协程介绍  协程,又称微线程。英文名Coroutine。协程是Python语言中所特有的,在其他语言中没有。  协程是python中另外一种实现多任务的方式,比线程更...
    99+
    2023-01-31
    Python gevent
  • 如何使用PHP实现满足条件跳转页面
    PHP是一种流行的编程语言,许多网站和应用程序都使用它来处理数据和创建动态内容。在网站开发中,有时需要根据特定条件将用户重定向到不同的页面,这可以通过PHP实现。在本文中,我们将讨论如何使用PHP实现满足条件跳转页面。检查条件要实现条件跳转...
    99+
    2023-05-14
    php
  • 怎么使用PHP实现满足条件跳转页面
    今天小编给大家分享一下怎么使用PHP实现满足条件跳转页面的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。检查条件要实现条件跳转...
    99+
    2023-07-05
  • 使用Pandas提取满足条件的数据的方法
    如何利用Pandas筛选出符合条件的数据 Pandas是Python中一个强大的数据分析库,它提供了丰富的数据处理和操作功能。在实际的数据分析和处理过程中,我们常常需要对数据进行筛选,以找出符合特定条件的数据。本文将向您介绍如何...
    99+
    2024-01-24
    Pandas筛选 符合条件的数据 利用Pandas
  • Python中gevent模块协程使用
    目录背景什么是协程?什么是 gevent?协程的例子Q&AQ:gevent 无法捕获的耗时A:猴子补丁实践异步 requests 请求gevent 的锁Tip背景 因为 Python 线程的性能问题,在 P...
    99+
    2022-06-02
    Python gevent协程 Python gevent
  • 多任务-----协程gevent的使用
    协程 一,迭代器iterable 能实现一定的数据,但是又不会占用很大的空间,协程切换任务资源小,效率高。如何判断某一类型是否可以迭代 from collections import Iterable


 print(isinstan...
    99+
    2023-01-31
    协程 gevent
  • ubuntu安装mysql数据库显示有未满足的依赖关系怎么办
    ubuntu安装mysql数据库显示有未满足的依赖关系的解决方法:在终端窗口下安装mysql显示有未能满足的依赖关系,可输入以下命令进行解决。sudo apt-get -f install #针对当前不满足的依赖关系,下载正确版本的依赖库...
    99+
    2024-04-02
  • 需要满足的绝对定位使用条件有哪些?
    绝对定位的使用条件有哪些?需要具体代码示例 绝对定位是一种常用的CSS定位方式,它可以使元素相对于其最近的非静态(即position属性值为static以外的元素)定位的父元素(包括body)进行定位。在使用绝对定位之前,我们需...
    99+
    2024-01-23
    绝对定位绝对定位 使用条件 编程绝对定位
  • 云服务器能满足用户哪些需求
    云服务器能满足用户需求的有:1、云服务器能满足用户更多需求变化,可为虚拟化环境、大型企业应用程序或事务处理数据库提供出色的解决方案;2、云服务器能满足更广泛用户的需求,保障数据的安全,降低网站服务器的租用价格;3、云服务器能满足用户的群体变...
    99+
    2024-04-02
  • 云服务器能满足用户什么需求
    灵活性:云服务器可以根据用户需求随时进行扩容或缩减,满足不同业务量的需求。 可靠性:云服务器通常具有高可用性和备份机制,可以...
    99+
    2024-05-13
    云服务器
  • 香港服务器租用能满足哪些需求
    香港服务器租用能满足的需求有:1、解决南北互通的问题;2、满足对网络访问速度高的业务;3、使用香港服务器无需备案,开通即用,满足想要将业务快速上线的企业。具体内容如下:南北互通相信我们都知道,内地的机房网络都有网通和电信之分,而这两个网络间...
    99+
    2024-04-02
  • 香港服务器租用能满足什么需求
    香港服务器租用能满足的需求有:1、不需要进行繁琐的备案流程;2、解决了南北互通问题,国内所有用户都能正常访问;3、能够满足国内外访问速度需求,适合国内外贸企业租用。具体内容如下:免备案租用国内服务器需要向工信部申请备案,只有备案通过后才能使...
    99+
    2024-04-02
  • Vue 全球化:满足多语言用户的需求
    Vue.js 是一个流行的前端框架,因其轻量级、可扩展性和数据绑定功能而备受推崇。随着全球化日益普遍,越来越多的应用程序需要为多语言用户提供支持。本文将探讨 Vue 中的全球化机制,帮助您构建支持多语言的应用程序。 基础 Vue 提供了一...
    99+
    2024-04-02
  • 怎么在Python中使用gevent实现协程
    怎么在Python中使用gevent实现协程?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。python是什么意思Python是一种跨平台的、具有解释性、编译性、互动性和面向对象...
    99+
    2023-06-14
  • Golang 技术在云计算领域中的应用是否满足安全要求
    golang 凭借其安全性功能,非常适合云计算环境:类型安全性减少了内存泄漏和缓冲区溢出。沙盒隔离应用程序以防止未经授权的访问。内置加密原语用于保护通信和数据存储。 Golang 技术...
    99+
    2024-05-09
    golang 云计算安全 敏感数据 标准库
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作