日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python 系统架构_Python之优化系统架构的方案

發(fā)布時(shí)間:2025/3/12 python 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 系统架构_Python之优化系统架构的方案 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

方案3: 改變系統(tǒng)架構(gòu)

在開(kāi)始多進(jìn)程之前,先簡(jiǎn)單說(shuō)明一下python GIL, 之前自己對(duì)他也有些誤解。因?yàn)閜ython GIL的機(jī)制存在,同時(shí)運(yùn)行的線程只有一個(gè),但這個(gè)線程在不同時(shí)刻可以運(yùn)行在不同的核上,這個(gè)調(diào)度是由操作系統(tǒng)完成的,如果你寫(xiě)個(gè)死循環(huán),開(kāi)的線程足夠多,是可以把整個(gè)系統(tǒng)的CPU消耗干凈的,此時(shí)你在Linux下通過(guò)top可以看到,us 占用的CPU不大,但sy占用的CPU會(huì)很大,CPU主要消耗在系統(tǒng)調(diào)度上了。下面是測(cè)試代碼,大家可以試試。

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()

既然因?yàn)镚IL的存在,同時(shí)只能運(yùn)行一個(gè)線程,那多線程可以提高效率,當(dāng)然可以!開(kāi)個(gè)3-4個(gè)線程可以明顯的提高性能,大概能提高個(gè)2-3倍左右吧,但繼續(xù)增加線程就是副作用了。

系統(tǒng)多線程的系統(tǒng)架構(gòu):

發(fā)送和接受都不存在瓶頸,主要瓶頸在在紅線部分,decode和 encode部分。多線程改成多進(jìn)程比較簡(jiǎn)單,工作量不大,只要把需要多進(jìn)程共享的信息,由Queue改成multiprocessing.Queue()就可以了,把繼承的DiameterMsgParser(threading.Thread)改成DiameterMsgParser(multiprocessing.Process),有個(gè)比較麻煩的是log的輸出,python自帶的logging模塊在多進(jìn)程下寫(xiě)同一個(gè)文件會(huì)引起混亂。這個(gè)在后面單獨(dú)說(shuō)明。

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))

多線程改成多進(jìn)程后,在sunfire 4170 (16 core , 2.4G ) 上能支持到5000 meesages (雙向), CPU占有率 30-40%,用的是標(biāo)準(zhǔn)的python2.7,因?yàn)樵趕olaris上沒(méi)安裝成功pypy,所以在此機(jī)器上,我沒(méi)有測(cè)試pypy對(duì)性能影響多大。但我在一個(gè)2核的linux機(jī)器上測(cè)試python和 pypy,在多進(jìn)程的情況下的效率,pypy對(duì)效率的提升沒(méi)有達(dá)到倍數(shù)的級(jí)別,沒(méi)找到什么原因, 后面有CPU核數(shù)比較多的機(jī)器再測(cè)試下。

本文由職坐標(biāo)整理并發(fā)布,希望對(duì)同學(xué)們有所幫助。了解更多詳情請(qǐng)關(guān)注職坐標(biāo)編程語(yǔ)言之Python!

總結(jié)

以上是生活随笔為你收集整理的python 系统架构_Python之优化系统架构的方案的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。