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

如何在Python中用OpenMP实现多CPU并行执行带不同参数的任务

使用OpenMP在Python中实现任务并行

由于Python解释器的GIL限制,纯Python代码无法直接利用OpenMP,需要借助支持OpenMP的JIT编译库(如numba)来实现并行任务分配。以下是针对你需求的具体实现方案:

实现步骤

  1. 安装numba(若未安装):
    pip install numba
    
  2. 修改代码,利用numba的OpenMP支持实现并行循环:
import numpy as np
import time
from numba import njit, prange

t1_start = time.process_time()

@njit
def func(a):
    # 替换为你的实际任务逻辑,示例为打印任务标识
    print(f"helloworld from task {a}")

@njit(parallel=True)
def run_parallel_tasks(task_count):
    # 使用prange替代range,numba会自动通过OpenMP分配任务到不同CPU核心
    for b in prange(task_count):
        func(b)

# 执行10个带不同参数的任务
run_parallel_tasks(10)

print(f"Total execution time: {time.process_time() - t1_start}")

关键说明

  • @njit(parallel=True):启用numba的OpenMP并行编译,将函数转换为机器码并利用多核心资源。
  • prange:替代普通range触发OpenMP循环并行化,自动将10个任务分配到可用CPU核心执行,效果类似MPI的scatter自动任务分配机制。
  • 任务适配:如果你的func包含Python原生复杂操作(如非数值类逻辑),可将@njit改为@njit(python=True)(object模式),但性能会略有下降;若为数值计算类任务,纯njit模式性能最优。

内容的提问来源于stack exchange,提问作者Muthu manimaran

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 03:10:40