真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Gevent滿足安裝使用-創(chuàng)新互聯(lián)

這篇文章主要介紹“Gevent滿足安裝使用”,在日常操作中,相信很多人在Gevent滿足安裝使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Gevent滿足安裝使用”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,提供網(wǎng)站建設(shè)、成都做網(wǎng)站,網(wǎng)頁設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);可快速的進(jìn)行網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,是專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

Gevent是一個(gè)基于greenlet的Python的并發(fā)框架,以微線程greenlet為核心,使用了epoll事件監(jiān)聽機(jī)制以及諸多其他優(yōu)化而變得高效。

于greenlet、eventlet相比,性能略低,但是它封裝的API非常完善,最贊的是提供了一個(gè)monkey類,可以將現(xiàn)有基于Python線程直接轉(zhuǎn)化為greenlet,相當(dāng)于proxy了一下(打了patch)。

1、安裝

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

至此,安裝完畢。

2、測試代碼:XML-RPC

這里必須使用支持線程的XML-RPC,否則無法發(fā)揮gevent的優(yōu)勢!

傳統(tǒng)版本:
需要說明的是,這個(gè)并很多資料描述的非單線程,而是一個(gè)select版本,所以某些時(shí)候比線程版本性能好。

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,只需要顯示調(diào)用你需要patch的東西就行了,別看我用了三行,其實(shí)可以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()

5、測試結(jié)果

現(xiàn)在只有一臺機(jī)器,下午去實(shí)驗(yàn)室兩臺機(jī)器跑了以后,放上結(jié)果。對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

服務(wù)器端的特殊配置:
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

然后說讓大家比較失望的結(jié)果:測試效果非常失敗,經(jīng)常出現(xiàn)異常情況,根據(jù)我的分析是默認(rèn)的XML-RPC沒有backlog(或者默認(rèn)太低),導(dǎo)致壓力一大,就會fail accept,從而導(dǎo)致RESET(connection refused)。廈門叉車租賃公司
所以說對monkey的patch不要抱太大希望,他是和原代碼密切相關(guān)的。

補(bǔ)充:已經(jīng)找到修改默認(rèn)backlog的方法,如下:

Python

from SocketServer import TCPServer

#修改這個(gè)全局變量即可

TCPServer.request_queue_size = 5000


當(dāng)然測試數(shù)據(jù)說明,不要過分迷戀monkey,那只是個(gè)傳說~

測試數(shù)據(jù):
c=500 n=50000
默認(rèn):2845/s, 8M
多線程:1966/s, 51M
gevent:1888/s, 11M

c=1000 n=100000
默認(rèn):3096/s, 8M
多線程:1895/s, 52M
gevent:1936/s, 11M

c=5000 n=500000
默認(rèn):3009/s, 8M
多線程:失敗,無法創(chuàng)建新線程
gevent:1988/s, 11M

c=10000 n=1000000
默認(rèn):2883/s, 8M
多線程:失敗,無法創(chuàng)建新線程
gevent:1992/s, 20M

monkey的優(yōu)點(diǎn)就是:省內(nèi)存,我是和線程的相比。
我仔細(xì)的分析了一下,XML-RPC使用CPU的比例還是很大的,相比較于直接http的計(jì)算,xmlrpc還是屬于cpu密集型。
在這種CPU占用很高,需要反復(fù)爭奪微greenlet的情況下,gevent并不具有優(yōu)勢。
或者從另一種角度說,測試機(jī)不夠強(qiáng)大,喂不飽gevent(可以看到,隨著并發(fā)線程升高,gevent的性能不降反升,而默認(rèn)的則在不斷下降)

到此,關(guān)于“Gevent滿足安裝使用”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!


新聞標(biāo)題:Gevent滿足安裝使用-創(chuàng)新互聯(lián)
分享地址:http://weahome.cn/article/ioioi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部