<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    qileilove

    blog已經轉移至github,大家請訪問 http://qaseven.github.io/

    用python做測試實現高性能測試工具(3)—優化系統架構

      在上一篇中對代碼進行了優化,離需求進了一步,但還是很大距離,代碼進一步優化我也不知道怎么辦了,不會高深的算法。只能從改進系統架構考慮。
      方案3: 改變系統架構
      在開始多進程之前,先簡單說明一下python GIL, 之前自己對他也有些誤解。因為python GIL的機制存在,同時運行的線程只有一個,但這個線程在不同時刻可以運行在不同的核上,這個調度是由操作系統完成的,如果你寫個死循環,開的線程足夠多,是可以把整個系統的CPU消耗干凈的,此時你在Linux下通過top可以看到,us 占用的CPU不大,但sy占用的CPU會很大,CPU主要消耗在系統調度上了。下面是測試代碼,大家可以試試。
    import threading
    class MultipleThread(threading.Thread):
    def __init__(self):
    threading.Thread.__init__(self)
    def run(self):
    while 1:
    print "here"
    for i in xrange(100):
    multiple_thread=MultipleThread()
    multiple_thread.start()
    multiple_thread.join()
      既然因為GIL的存在,同時只能運行一個線程,那多線程可以提高效率,當然可以!開個3-4個線程可以明顯的提高性能,大概能提高個2-3倍左右吧,但繼續增加線程就是副作用了。
      系統多線程的系統架構:
      發送和接受都不存在瓶頸,主要瓶頸在在紅線部分,decode和 encode部分。多線程改成多進程比較簡單,工作量不大,只要把需要多進程共享的信息,由Queue改成multiprocessing.Queue()就可以了,把繼承的DiameterMsgParser(threading.Thread)改成DiameterMsgParser(multiprocessing.Process),有個比較麻煩的是log的輸出,python自帶的logging模塊在多進程下寫同一個文件會引起混亂。這個在后面單獨說明。
    import multiprocessing
    import logging
    class Worker(multiprocessing.Process):
    def __init__(self,mp_name,input_queue):
    multiprocessing.Process.__init__(self,name=mp_name)
    self.input_queue=input_queue
    def run(self):
    for i in xrange(100):
    self.input_queue.put_nowait(i)
    logging.debug("test "+str(i))
      多線程改成多進程后,在sunfire 4170 (16 core , 2.4G ) 上能支持到5000 meesages (雙向), CPU占有率 30-40%,用的是標準的python2.7,因為在solaris上沒安裝成功pypy,所以在此機器上,我沒有測試pypy對性能影響多大。但我在一個2核的linux機器上測試python和 pypy,在多進程的情況下的效率,pypy對效率的提升沒有達到倍數的級別,沒找到什么原因, 后面有CPU核數比較多的機器再測試下。
    相關文章
    用python做測試實現高性能測試工具(2)—優化代碼

    posted on 2014-01-06 14:00 順其自然EVO 閱讀(310) 評論(0)  編輯  收藏 所屬分類: selenium and watir webdrivers 自動化測試學習

    <2014年1月>
    2930311234
    567891011
    12131415161718
    19202122232425
    2627282930311
    2345678

    導航

    統計

    常用鏈接

    留言簿(55)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 中文在线观看永久免费| 四虎国产精品永免费| 免费成人在线视频观看| 国外亚洲成AV人片在线观看| 色www免费视频| 亚洲成a人片在线播放| 一级特黄aaa大片免费看| 亚洲美女高清一区二区三区| 日韩大片在线永久免费观看网站| 免费a级毛片网站| 产传媒61国产免费| 亚洲欧洲日产国码av系列天堂| 中国性猛交xxxxx免费看| 久久精品亚洲中文字幕无码网站| 久久免费观看国产精品| 亚洲av无码国产综合专区 | 97在线视频免费播放| 亚洲另类小说图片| 国产成人免费A在线视频| 一二三区免费视频| 亚洲国产精品久久久天堂| **毛片免费观看久久精品| 亚洲H在线播放在线观看H| 国产嫩草影院精品免费网址| 日韩在线视频播放免费视频完整版| 亚洲中文字幕无码久久2017 | 久久精品成人免费观看97| 五月天网站亚洲小说| 成人最新午夜免费视频| 免费精品久久久久久中文字幕| 亚洲成AV人片在线观看ww| 国产日本一线在线观看免费| 色偷偷尼玛图亚洲综合| 亚洲国产精品高清久久久| 国产1024精品视频专区免费| 免费精品视频在线| 久久久无码精品亚洲日韩京东传媒| 成年女人午夜毛片免费看| 一本到卡二卡三卡免费高| 中文字幕亚洲精品资源网| 免费一区二区视频|