2016-03-03 79 views
1

我不想使用任何測試工具.. 我正在寫python腳本,其中休息api服務器... 我想打500/any_number_of命中登錄/任何API到服務器,以便我可以檢查服務器的性能。服務器性能測試的Python腳本

def login():  
      api = "http://0.0.0.0/api/method/login" 
      params = {"usr":"[email protected]","pwd":"password"} 
      reponse = requests.post(api,params=params) 

    def main(): 
      for i in range(2): 
       for j in range(5): 
         t1 = Thread(target=login(), args=(j,)) 
         t2 = Thread(target=get_profile(), args=(j,)) 
       t1.start() 
       t2.start() 
    main() 

此代碼是否工作?請告訴我如何去做...

回答

0

使用類似gevent或asyncio的couroutine模塊。你可以有很多的協程,但是你的線程數量會受到限制。這個限制來自操作系統允許你的進程擁有的線程數量,以及線程產生更大的性能影響(每個線程需要自己的堆棧+上下文切換成本)的事實。

這裏是一種與GEVENT做到這一點:

from gevent import monkey monkey.patch_all() 
import urllib2 
from gevent.pool import Pool 

def download(url): 
    return urllib2.urlopen(url).read() 

if __name__ == '__main__': 
    urls = ['http://your_url'] * 100 
    pool = Pool(20) 
    print pool.map(download, urls)