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

Python多进程返回值处理:如何提取多个进程返回的最小运算值

解决方案

你只需要在遍历多进程返回结果时,把每个进程返回的最优值提取出来,再筛选最小值即可,修改后的完整代码如下:

import concurrent.futures
import time
import os

# 原有业务逻辑函数无需调整
def do_processVal():
    getParamInit()
    do_evaluation()
    currbestVal = bestGlobalVal
    return 'Current best value: ', currbestVal, 'for process{}'.format(os.getpid())

start = time.perf_counter()
# 初始化最小值变量为无穷大,用于后续比对更新
FinalbestVal = float('inf')

with concurrent.futures.ProcessPoolExecutor() as executor:
    results = [executor.submit(do_processVal) for _ in range(5)]
    for f in concurrent.futures.as_completed(results):
        # 修正原代码笔误:获取单个进程返回值用result(),不是results()
        res = f.result()
        print(res)
        # 提取返回元组中索引为1的元素,就是待比对的最优数值
        curr_val = res[1]
        # 实时比对更新最小值
        if curr_val < FinalbestVal:
            FinalbestVal = curr_val

finish = time.perf_counter()
print(f'Finished in {round(finish-start, 2)} second(s)')
print(f'FinalbestVal = {FinalbestVal}')

逻辑说明

  • 你定义的do_processVal返回的是三元组结构,第二个元素就是需要比对的数值,直接提取即可
  • 提前初始化最小值为无穷大,每拿到一个进程的返回结果就做一次对比,自动更新为更小的数值,所有进程执行完成后就得到全局最小的最优值
  • 原代码中的f.results()属于笔误,去掉末尾的s才能正常获取进程返回结果

内容的提问来源于stack exchange,提问作者NAJAA BAZILAH

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 14:45:03