最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python的網(wǎng)絡編程庫Gevent的安裝及使用技巧

 更新時間:2016年06月24日 16:44:14   作者:烏龜殼  
Gevent庫的奧義在于并發(fā)式的高性能網(wǎng)絡程序設計支持,這里我們將來講解Python的網(wǎng)絡編程庫Gevent的安裝及使用技巧,來看一下Gevent支持的多進程程序編寫:

安裝(以CentOS為例)
gevent依賴libevent和greenlet:
1.安裝libevent
直接yum install libevent
然后配置python的安裝
2.安裝easy_install
(1)

wget -q http://peak.telecommunity.com/dist/ez_setup.py

(2)使用

python ez_setup.py

(3)使用easy_install 查看命令是否可用,如果不可用可以講路徑加入到PATH中
3.安裝greenlet
(1)

yum install python-devel

(2)

easy_install greenlet

4.安裝gevent

pip install cython -e git://github.com/surfly/gevent.git@1.0rc2#egg=gevent

使用技巧
Gevent庫性能很高,但一直以來我都糾結在python的GIL模型導致的線程不能搶占多核資源上面。
而啟動多個python進程的這種利用多核的模式又需要增加前端負載均衡,比如lvs那些,有些麻煩。
multiprocessing模塊和os.fork又會使得兩個進程重復在事件核心注冊accept事件,導致文件句柄重復的異常。
至于一個進程監(jiān)聽,多個進程處理的模式,監(jiān)聽的那個進程資源又不好分配——是獨立分配一個核心還是不單獨分配呢?如果單獨分配,連接量小的時候就浪費了一個核心,如果不分配,連接量大的時候cpu又會頻繁切換進程。
昨日才發(fā)現(xiàn)原來gevent是可以很輕松地將它的網(wǎng)絡模型分布到多個進程并行處理的。
秘訣就在gevent.fork()。
以前想當然地認為gevent.fork只是greenlet.spawn的一個包裝,原來不是這樣。gevent.fork能替代os.fork,不僅會啟動一個新的進程,而且能將它們底層的事件處理溝通起來,進行并行處理。

import gevent
from gevent.server import StreamServer

def eat_cpu():
  for i in xrange(10000): pass

def cb(socket, address):
  eat_cpu()
  socket.recv(1024)
  socket.sendall('HTTP/1.1 200 OK\n\nHello World!!')
  socket.close()

server = StreamServer(('',80), cb, backlog=100000)
server.pre_start()

gevent.fork()

server.start_accepting()
server._stopped_event.wait()

 打上monkey.patch_os后,os.fork就可以被gevent.fork替代了,這樣同時multiprocessing模塊也可以像往常一樣使用,并達到并行處理的效果了。

from gevent import monkey; monkey.patch_os()
from gevent.server import StreamServer
from multiprocessing import Process

def eat_cpu(): 
  for i in xrange(10000): pass

def cb(socket, address):
  eat_cpu()
  socket.recv(1024)
  socket.sendall('HTTP/1.1 200 OK\n\nHello World!!')
  socket.close()

server = StreamServer(('',80), cb, backlog=100000)
server.pre_start()

def serve_forever():
  server.start_accepting()
  server._stopped_event.wait()

process_count = 4

for i in range(process_count - 1):
  Process(target=serve_forever, args=tuple()).start()

serve_forever()

相關文章

  • mac安裝pytorch及系統(tǒng)的numpy更新方法

    mac安裝pytorch及系統(tǒng)的numpy更新方法

    今天小編就為大家分享一篇mac安裝pytorch及系統(tǒng)的numpy更新方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • pandas.DataFrame選取/排除特定行的方法

    pandas.DataFrame選取/排除特定行的方法

    今天小編就為大家分享一篇pandas.DataFrame選取/排除特定行的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • 用Python制作簡單的鋼琴程序的教程

    用Python制作簡單的鋼琴程序的教程

    這篇文章主要介紹了用Python制作簡單的鋼琴程序的教程,用鍵盤演奏、包括變速和變調(diào)等功能的實現(xiàn),需要的朋友可以參考下
    2015-04-04
  • python抓取skywalking中超過2s的告警接口

    python抓取skywalking中超過2s的告警接口

    這篇文章主要為大家介紹了python抓取skywalking中超過2s的告警接口詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • Python實現(xiàn)獲取內(nèi)網(wǎng)IP地址的方法總結

    Python實現(xiàn)獲取內(nèi)網(wǎng)IP地址的方法總結

    這篇文章主要為大家詳細介紹了五種利用Python語言實現(xiàn)獲取內(nèi)網(wǎng)IP地址的方法,文中的示例代碼講解詳細,具有一定的參考價值,需要的可以了解一下
    2023-03-03
  • Python異常處理之try...except語句

    Python異常處理之try...except語句

    Python異常處理是Python中重要的一部分,為了保證程序的穩(wěn)定性和可靠性,我們需要使用異常處理來及時捕獲,并以優(yōu)雅的方式來處理這些異常,本教程將介紹如何處理?Python中的異常,需要的朋友可以參考下
    2023-06-06
  • pyqt5實現(xiàn)井字棋的示例代碼

    pyqt5實現(xiàn)井字棋的示例代碼

    這篇文章主要給大家介紹了關于pyqt5實現(xiàn)井字棋的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • 基于Python的GUI圖形用戶界面編程詳細講解

    基于Python的GUI圖形用戶界面編程詳細講解

    GUI圖形用戶界面編程,我們可以通過python提供的豐富的組件,快速的實現(xiàn)使用圖形的界面和用戶交互, GUI編程類似于“搭積?”,將?個個組件(Widget)放到窗?中,這篇文章主要給大家介紹了基于Python的GUI圖形用戶界面編程的相關資料,需要的朋友可以參考下
    2022-12-12
  • python實現(xiàn)微信機器人: 登錄微信、消息接收、自動回復功能

    python實現(xiàn)微信機器人: 登錄微信、消息接收、自動回復功能

    這篇文章主要介紹了python實現(xiàn)微信機器人: 登錄微信、消息接收、自動回復功能,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • Python PIL庫圖片灰化處理

    Python PIL庫圖片灰化處理

    這篇文章主要介紹了Python圖片灰化處理PIL庫的相關知識,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04

最新評論

文成县| 湘乡市| 高陵县| 松滋市| 湖州市| 驻马店市| 平凉市| 黄石市| 荥阳市| 建德市| 德保县| 金昌市| 襄城县| 桦川县| 滦平县| 鄂尔多斯市| 大城县| 富平县| 金湖县| 定兴县| 喜德县| 罗江县| 淳化县| 宁城县| 东阿县| 五指山市| 海伦市| 鸡东县| 阜平县| 和田市| 陵川县| 神农架林区| 南康市| 徐汇区| 玛曲县| 新丰县| 嫩江县| 苏尼特右旗| 广安市| 宝坻区| 涡阳县|