现在有一个gunicorn + flask 做的server,是用作服务的,读一些数据,吐一些输出。client用的是requests包,读取文件,然后将行分割,作为参数传给server,等待server的回应。
问题是:我client即使用多线程去访问server,发现server的CPU占用率始终只有60%,如何能让cpu利用率提升到100%?
PS: 同时启动多个client做测试的时候,cpu会到100%,但如何在单个client.py中实现?
现在有一个gunicorn + flask 做的server,是用作服务的,读一些数据,吐一些输出。client用的是requests包,读取文件,然后将行分割,作为参数传给server,等待server的回应。
问题是:我client即使用多线程去访问server,发现server的CPU占用率始终只有60%,如何能让cpu利用率提升到100%?
PS: 同时启动多个client做测试的时候,cpu会到100%,但如何在单个client.py中实现?
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
2 回答869 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
Python有GIL即全局解释器锁。因此多线程Python脚本无法同时执行,只能用到单核。
你可以用multiprocessing来实现多进程,或者考虑将复杂的逻辑改为用c实现。
下面的代码就是根据cpu核心数量开启进程池,然后其中map第一个参数是业务方法,第二个是迭代器,每当有空闲进程时,进程池就会取下一组数据进行计算。