python并发编程:Python在FastAPI服务中使用多进程池加速程序运行

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
大数据开发治理平台 DataWorks,不限时长
简介: python并发编程:Python在FastAPI服务中使用多进程池加速程序运行

往期文章:

  1. 并发编程简介
  2. 怎样选择多线程多进程多协程
  3. Python速度慢的罪魁祸首,全局解释器锁GIL
  4. 使用多线程,Python爬虫被加速10倍
  5. Python实现生产者消费者爬虫
  6. Python线程安全问题以及解决方案
  7. Python好用的线程池ThreadPoolExecutor
  8. Python使用线程池在Web服务中实现加速
  9. 使用多进程multiprocessing模块加速程序的运行

使用多进程在FastAPI服务中加速

大部分情况下使用多线程加速就可以了,但是,有些应用是也会遇到cpu密集型的计算。怎么在FastAPI中使用进程池来加速呢?下面通过代码演示方式为大家介绍一下:

from fastapi import FastAPI,Query
import math
app = FastAPI(debug=True)
from concurrent.futures import ProcessPoolExecutor

def is_prime(num):

    """
    判断是不是素数
    """
    if num < 2:
        return False

    if num == 2:
        return True

    if num % 2 == 0:
        return False
    sqrt_n  = int(math.floor(math.sqrt(num)))

    for i in range(3,sqrt_n+1,2):
        if num % i == 0:
            return False
    return True

@app.get("/is_prime/{num_list}")
def api_is_prime(num_list:str=Query(description="判断素数的参数")):
    num_list = [int(x) for x in num_list.split(",")]
    result = pool.map(is_prime,num_list)
    return dict(zip(num_list,result))



if __name__ == "__main__":
    import uvicorn
    pool = ProcessPoolExecutor()
    uvicorn.run(app=app)

注意: ProcessPoolExecutor必须放在所以函数的最后面,而且必须在__main__里面

启动应用:

python 07.fastapi_process_pool.py

测试接口,结果如下:

目录
相关文章
|
4天前
|
Java 测试技术 Python
Python的多线程允许在同一进程中并发执行任务
【5月更文挑战第17天】Python的多线程允许在同一进程中并发执行任务。示例1展示了创建5个线程打印&quot;Hello World&quot;,每个线程调用同一函数并使用`join()`等待所有线程完成。示例2使用`ThreadPoolExecutor`下载网页,创建线程池处理多个URL,打印出每个网页的大小。Python多线程还可用于线程间通信和同步,如使用Queue和Lock。
17 1
|
5天前
|
数据处理 Python
Python并发编程:实现高效的多线程与多进程
Python作为一种高级编程语言,提供了强大的并发编程能力,通过多线程和多进程技术,可以实现程序的并发执行,提升系统的性能和响应速度。本文将介绍Python中多线程和多进程的基本概念,以及如何利用它们实现高效的并发编程,解决实际开发中的并发性问题。
|
6天前
|
Linux C++
【Linux】详解进程程序替换
【Linux】详解进程程序替换
|
6天前
|
监控 Python
python过滤指定进程
python过滤指定进程
16 1
|
6天前
|
运维 监控 Ubuntu
Python实现ubuntu系统进程内存监控
Python实现ubuntu系统进程内存监控
17 1
|
6天前
|
开发者 Python
在Python中查询进程信息的实用指南
在Python中查询进程信息的实用指南
11 2
|
6天前
|
存储 Java Android开发
app应用程序进程启动过程
app应用程序进程启动过程
20 1
|
6天前
|
监控 Linux Shell
|
6天前
|
缓存 前端开发 安全
Python web框架fastapi中间件的使用,CORS跨域详解
Python web框架fastapi中间件的使用,CORS跨域详解
|
6天前
|
API 数据库 Python
Python web框架fastapi数据库操作ORM(二)增删改查逻辑实现方法
Python web框架fastapi数据库操作ORM(二)增删改查逻辑实现方法