flask - python如何单进程压满服务

 燕过无痕GY_274 发布于 2022-11-04 02:21

现在有一个gunicorn + flask 做的server,是用作服务的,读一些数据,吐一些输出。client用的是requests包,读取文件,然后将行分割,作为参数传给server,等待server的回应。
问题是:我client即使用多线程去访问server,发现server的CPU占用率始终只有60%,如何能让cpu利用率提升到100%?

PS: 同时启动多个client做测试的时候,cpu会到100%,但如何在单个client.py中实现?

1 个回答
  • Python有GIL即全局解释器锁。因此多线程Python脚本无法同时执行,只能用到单核。
    你可以用multiprocessing来实现多进程,或者考虑将复杂的逻辑改为用c实现。

    下面的代码就是根据cpu核心数量开启进程池,然后其中map第一个参数是业务方法,第二个是迭代器,每当有空闲进程时,进程池就会取下一组数据进行计算。

    pool = Pool(processes=os.cpu_count())
    results = pool.map(__read_excle, [(r'resource/linkdata/' + i, i) for i in os.listdir(r'resource/linkdata/')])
    pool.close()
    pool.join()
    
    2022-11-06 15:43 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有