iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >怎么使用Python提供高性能计算服务
  • 855
分享到

怎么使用Python提供高性能计算服务

2024-04-02 19:04:59 855人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

这期内容当中小编将会给大家带来有关怎么使用python提供高性能计算服务,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。前言Python具有丰富的库,并且很容易作为胶水语言

这期内容当中小编将会给大家带来有关怎么使用python提供高性能计算服务,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

前言

Python具有丰富的库,并且很容易作为胶水语言很容易与C/C++进行交互集成。

因此为了适应快速变化的业务和兼顾计算效率,在上层采用python作为server提供service,在底层采用c/c++进行计算是一种对于算法开发者非常适宜的方式。

python flask库提供Http接口以及相关demo页面,gunicorn提供多核并行能力,底层c++库提供单线程上的计算。

下面通过一个例子说明这种架构。代码地址:python_hps

准备

在实验开始之前,需要安装flask、gunicorn、apach bench tool等工具

注:所有实验均在linux系统中进行。测试机器为4核虚拟机

sudo pip install flask sudo pip install gunicorn sudo apt-get install apache2-utils

计算

计算部分模拟真实计算,因此计算量比较大,在我测试的虚拟机上单核单线程跑400ms左右。

c++核心计算部分,随便写的:

api_DESC int foo(const int val) {     float result = 0.0f;     for(int c=0;c<1000;c++)     {         for(int i=0;i<val;i++)         {             result += (i);             result += sqrt((float)(i*i));             result += pow((float)(i*i*i),0.1f);         }     }     return (int)result; }

python wrapper,采用ctypes:

#python wrapper of libfoo class FooWrapper:     def __init__(self):         cur_path = os.path.abspath(os.path.dirname(__file__))         self.module = ctypes.CDLL(os.path.join(cur_path,'./impl/libfoo.so'))     def foo(self,val):             self.module.foo.argtypes = (ctypes.c_int,)         self.module.foo.restype = ctypes.c_int         result = self.module.foo(val)         return result

flask http API:

@app.route('/api/foo',methods=['GET','POST']) def handle_api_foo():     #get input     val = flask.request.JSON['val']     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})     return result

单核服务

首先测试python单核服务,同时也是单线程服务(由于python GIL的存在,python多线程对于计算密集型任务几乎起反作用)。

  • 启动服务

在script目录下执行run_single.sh,即

#!/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运转

怎么使用Python提供高性能计算服务

ab测试结果

怎么使用Python提供高性能计算服务

可以看出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运转

怎么使用Python提供高性能计算服务

ab测试结果

怎么使用Python提供高性能计算服务

可以看出CPU用满了4个核,负载是8.56 request/second。是单核的3.5倍左右,可以任务基本达成多核有效利用的的目的。

总结

使用flask、gunicorn基本可以搭建一个用于调试或者不苛责过多性能的服务,用于算法服务提供非常方便。本文提供该方案的一个简单示例,实际业务中可基于此进行修改完善。

上述就是小编为大家分享的怎么使用Python提供高性能计算服务了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网Python频道。

--结束END--

本文标题: 怎么使用Python提供高性能计算服务

本文链接: https://www.lsjlt.com/news/84983.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么使用Python提供高性能计算服务
    这期内容当中小编将会给大家带来有关怎么使用Python提供高性能计算服务,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。前言python具有丰富的库,并且很容易作为胶水语言...
    99+
    2024-04-02
  • 阿里云弹性计算服务ECS为企业提供高效、灵活的计算能力
    阿里云弹性计算服务ECS(Elastic ComputeService)是一款基于虚拟化技术的云计算服务,为企业提供高效、灵活的计算能力。它可以帮助企业快速部署和扩展应用,同时降低IT运营成本。本文将详细说明ECS的特点、优势和使用方法。 ...
    99+
    2023-11-15
    高效 阿里 弹性
  • DNF云服务器:提供高性能和可靠的云计算解决方案
    1. 什么是DNF云服务器? DNF云服务器是一种基于云计算技术的虚拟服务器,专为游戏《地下城与勇士》(DNF)的玩家而设计。它提供了高性能、可靠性和灵活性,使玩家能够在云端轻松运行游戏,并享受流畅的游戏体验。 2. DNF云服务器的优势...
    99+
    2023-10-28
    高性能 可靠 解决方案
  • 长城超云服务器:提供高性能和可靠的云计算解决方案
    1. 什么是长城超云服务器? 长城超云服务器是由中国电子信息产业集团有限公司(简称“长城集团”)推出的一种高性能、可靠的云计算解决方案。它基于云计算技术,为用户提供了强大的计算、存储和网络资源,以满足各种企业和个人的需求。 2. 长城超云...
    99+
    2023-10-27
    长城 高性能 可靠
  • 怎么提高mysql服务性能
    分享几个提高mysql服务性能的技巧开启查询缓存大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个缓存中,这样,后续的...
    99+
    2024-04-02
  • 使用Swoole怎么提高Laravel性能
    使用Swoole怎么提高Laravel性能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。环境1:硬件: 1 CPU, 4 Cores, 16GB MemoryMacOS 1...
    99+
    2023-06-15
  • 使用Golang的同步机制提高分布式计算性能
    在分布式计算中,使用Golang的同步机制可以提高性能的几个方法:1. 使用互斥锁(Mutex):互斥锁是一种最基本的同步机制,用于...
    99+
    2023-10-10
    Golang
  • 怎么使用WITH AS提高性能
    这篇文章将为大家详细讲解有关怎么使用WITH AS提高性能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。  如何使用WITH AS提高性能  1. 案例起因  公司门店应...
    99+
    2024-04-02
  • 阿里云计算机服务器高性能计算平台
    阿里云计算机服务器是一款高性能计算平台,为用户提供强大的计算能力。它基于云计算技术,具有高度可扩展性和灵活性,能够满足各种大规模数据处理和计算需求。同时,阿里云计算机服务器还提供了丰富的API接口,用户可以通过编写代码的方式来调用服务,实现...
    99+
    2023-11-17
    阿里 高性能 服务器
  • LeetCode 算法题能提高 Apache 服务器性能吗?
    随着互联网的发展,服务器性能的优化越来越重要。Apache 服务器是一个广泛使用的服务器,其性能优化一直是一个热门话题。那么,LeetCode 算法题能否提高 Apache 服务器性能呢?本文将探讨这个问题。 首先,让我们了解一下 Lee...
    99+
    2023-10-25
    leetcode 日志 apache
  • 高性能计算:使用Go WaitGroup分解复杂任务
    在高性能计算中,复杂任务的分解和并行化是提高计算效率的关键。Go语言中的WaitGroup类型可以用于实现任务的分解和并行化。Wai...
    99+
    2023-10-12
    Go语言
  • 怎么用FieldMask提高C#的gRpc服务性能
    这篇文章主要介绍“怎么用FieldMask提高C#的gRpc服务性能”,在日常操作中,相信很多人在怎么用FieldMask提高C#的gRpc服务性能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用Fiel...
    99+
    2023-06-29
  • 阿里云ECS性能如何提升云计算服务性能?
    随着云计算的发展,越来越多的企业和个人选择使用阿里云ECS(Elastic ComputeService)来满足自己的计算需求。然而,如何提高阿里云ECS的服务性能,是许多用户关心的问题。本文将详细介绍如何提升阿里云ECS的性能,帮助用户...
    99+
    2023-12-15
    性能 阿里 ECS
  • 香港云服务器试用:为你的业务提供高性能和可靠性
    1. 什么是云服务器? 云服务器是一种基于云计算技术的虚拟服务器,它可以通过互联网提供计算资源和存储空间。与传统的物理服务器相比,云服务器具有更高的灵活性、可扩展性和可靠性。 2. 为什么选择香港云服务器? 2.1 高性能 香港作为亚洲的...
    99+
    2023-10-28
    香港 高性能 可靠性
  • 40G 阿里云服务器高性能、高可靠性的云计算服务
    在当前数字化时代,云计算已经成为了许多企业和个人的首选解决方案。阿里云作为国内领先的云计算服务提供商之一,其提供的40G阿里云服务器备受关注。本文将详细介绍40G 阿里云服务器的特点和优势,并通过实例来展示其在不同场景下的应用。 1. 强大...
    99+
    2023-12-27
    阿里 高性能 高可靠性
  • 亚马逊推出全新服务器,提供更高效的云计算服务
    1. 亚马逊新服务器的背景 亚马逊作为全球最大的云计算服务提供商之一,一直致力于提供更高效、更可靠的云计算服务。为了满足客户对更高性能、更低成本的需求,亚马逊最近推出了全新的服务器。 2. 亚马逊新服务器的特点 亚马逊新服务器采用了最新的...
    99+
    2023-10-27
    亚马逊 高效 服务器
  • 亚马逊AWS提供的云计算服务是什么服务
    简介 亚马逊AWS(Amazon Web Services)是全球领先的云计算服务提供商之一,提供了广泛的云计算服务,包括计算、存储、数据库、人工智能、物联网等。本文将详细介绍亚马逊AWS提供的云计算服务。亚马逊AWS提供的云计算服务1. ...
    99+
    2024-01-30
    亚马逊 AWS
  • 亚马逊aws提供的云计算服务是什么
    亚马逊AWS(Amazon Web Services)是一种云计算服务,它提供了一系列的基础设施服务,包括计算、存储、数据库、分析、机器学习、人工智能、物联网、安全和应用程序集成等。AWS的服务可以帮助企业和个人在云端构建和运行各种应用程序...
    99+
    2023-10-27
    亚马逊 aws
  • 9.9阿里云服务器:为你的业务提供高性能和可靠性
    1. 什么是9.9阿里云服务器? 9.9阿里云服务器是阿里云推出的一项优惠活动,旨在为用户提供高性能和可靠性的云服务器服务。在这个活动中,用户可以以非常优惠的价格租用阿里云服务器,享受强大的计算和存储能力,满足各种业务需求。 2. 为什么...
    99+
    2023-10-27
    阿里 高性能 可靠性
  • 如何使用 Python 编写高效的算法,以提高您的代码性能?
    Python 是一种高级编程语言,它不仅易于学习和使用,而且具有丰富的库和工具,可以帮助您编写高效的算法,以提高代码性能。在本文中,我们将介绍一些使用 Python 编写高效算法的技巧,以帮助您更好地利用 Python。 一、Python ...
    99+
    2023-07-23
    编程算法 日志 unix
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作