You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python循环中使用多进程并行执行三个计算函数?

在Python循环中通过多进程异步执行三个计算函数的实现方法

我有三个计算函数(求和、乘法、除法),希望在Python的循环中通过多进程异步执行它们,如何实现将这三个函数应用到循环中?以下是我的示例代码及期望的最终结果:

原示例代码(含语法问题)

def sum(a, b):
    sum= a+b  # 变量名与函数名冲突,覆盖内置sum函数
    return sum

def multi(a, b):
    mutli= a*b  # 拼写错误:mutli → multi
    return multi

def divide(a, b):
    divide= a/b  # 变量名与函数名冲突
    return divide

final_data = [{'a':1, 'b':3},{'a':7, 'b':5},{'a':6, 'b':4}]
for data in final :  # 变量名错误:final → final_data
    sum_value = sum(data['a'], data['b']  # 缺少闭合括号
    multi_value = multi(data['a'], data['b']  # 缺少闭合括号
    divide_value = divide(data['a'], data['b']  # 缺少闭合括号

# 期望的最终输出
final_data = [
    {'a':1, 'b':3, 'sum_value':4, 'multi_value':3, 'divide_value':0.34},
    {'a':7, 'b':5,'sum_value':12, 'multi_value':35, 'divide_value':1.4},
    {'a':6, 'b':4,'sum_value':10, 'multi_value':24, 'divide_value':1.5}
]

修正后的多进程实现方案

首先修正原函数的命名和拼写问题,再使用concurrent.futures.ProcessPoolExecutor实现多进程异步执行:

1. 修正基础计算函数

def calculate_sum(a, b):
    return a + b

def calculate_multi(a, b):
    return a * b

def calculate_divide(a, b):
    return a / b

2. 多进程异步处理逻辑

from concurrent.futures import ProcessPoolExecutor

final_data = [{'a':1, 'b':3},{'a':7, 'b':5},{'a':6, 'b':4}]

# 处理单个数据项的函数:在子进程中并行执行三个计算
def process_single_item(item):
    a, b = item['a'], item['b']
    
    with ProcessPoolExecutor(max_workers=3) as executor:
        # 提交三个异步计算任务
        sum_task = executor.submit(calculate_sum, a, b)
        multi_task = executor.submit(calculate_multi, a, b)
        divide_task = executor.submit(calculate_divide, a, b)
        
        # 获取任务结果
        sum_val = sum_task.result()
        multi_val = multi_task.result()
        divide_val = divide_task.result()
    
    # 将结果合并到原字典,匹配示例的小数格式
    item['sum_value'] = sum_val
    item['multi_value'] = multi_val
    item['divide_value'] = round(divide_val, 2) if not divide_val.is_integer() else divide_val
    return item

# 批量处理所有数据项(外层也可并行)
with ProcessPoolExecutor() as executor:
    processed_result = list(executor.map(process_single_item, final_data))

# 输出结果
for item in processed_result:
    print(item)

代码说明

  • ProcessPoolExecutor是Python标准库中用于管理多进程的工具,submit()方法提交异步任务,返回Future对象,通过result()获取执行结果
  • 对每个数据项,我们在子进程中并行执行三个计算函数,相比串行执行能提升计算效率(尤其当计算逻辑复杂时)
  • 处理小数位数时,判断结果是否为整数,非整数则保留两位小数,与示例输出格式一致

内容的提问来源于stack exchange,提问作者Adarsh Srivastav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 01:36:00