python如何单进程压满服务

发布于 2022-09-01 12:56:34 字数 249 浏览 20 评论 0

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

記憶穿過時間隧道 2022-09-08 12:56:34

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()
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文