]
logging.info('[handle_api_foo] val: %d'% (val))
#do calc
result = fooWrapper.foo(val)
logging.info('[handle_api_foo] result: %d'% (result))
result = json.dumps({'result':result})
returnresult
单查究事
起首测试python单查究事,同时也是单线程办事(因为python GIL的存在,python多线程对于计算密集型义务几乎起反感化)。启动办事#!/bin/sh
#python
export PYTHONIOENCODING=utf-8
#start server
cd `pwd`/..
echo "run single pocess server"
python server.py
cd -
echo "server is started."测试办事
别的打开一个终端,履行script目次下的bench.sh,即#!/bin/sh
ab -T 'application/json'-p post.data -n 100 -c 10 http://127.0.0.1:4096/api/foo测试结不雅
总结
CPU运转

ab测试结不雅

可以看出CPU只用了1个核,负载是2.44 request/second。
多核启动办事
在script目次下履行run_parallel.sh,即#!/bin/sh
#python
export PYTHONIOENCODING=utf-8
#start server
cd `pwd`/..
echo "run parallel pocess server"
gunicorn -c gun.conf server:app
cd -
echo "server is started."
个中gun.conf是一个python脚本,设备了gunicorn的一些参数,如下:import multiprocessing
bind = '0.0.0.0:4096'
workers = max(multiprocessing.cpu_count()*2+1,1)
backlog = 2048
worker_class = "sync"
debug = False
proc_name = 'foo_server'测试办事
别的打开一个终端,履行script目次下的bench.sh,即#!/bin/sh
ab -T 'application/json'-p post.data -n 100 -c 10 http://127.0.0.1:4096/api/foo测试结不雅

CPU运转

ab测试结不雅
可以看出CPU用满了4个核,负载是8.56 request/second。是单核的3.5倍阁下,可以义务根本杀青多核有效应用的的目标。
推荐阅读
电信行业肯定欲望在超高容量和低延迟的下一代收集的支撑下安排5G营业,然则在5G商用之前,该技巧须要做进一步>>>详细阅读
地址:http://www.17bianji.com/lsqh/35421.html
本文通过使用Python进行多线程性能测试,对比了单线程与多线程环境下服务的处理能力。实验结果显示,在多核环境下利用多线程能够显著提高服务的并发处理能力和整体性能。

被折叠的 条评论
为什么被折叠?



