首页 > 解决方案 > 如何同时在两个列表上运行一个函数?

问题描述

我有一个简单的问题。本质上,我想同时或并行在列表列表上运行一个函数。

这基本上是我正在使用的

def func(x):
    print(x)
for objectList in space:
    for subObject in objectList:
        func(subObject)

理想情况下,我希望能够同时func()运行每一个objectList。我知道(实际上我不知道,这就是为什么我要问如何做到这一点)这是线程或并行,但这是我第一次尝试这样做。

我的问题是,python 中是否有模块或内置函数或标准方式来完成此任务?

抱歉,如果我以某种方式违反了该网站或其他内容的规则,或者您认为这个问题很愚蠢或重复或其他什么。

标签: pythonpython-3.xmultithreadingparallel-processing

解决方案


来自 python 文档:

Pool 对象 [...] 提供了一种方便的方法,可以跨多个输入值并行执行函数,跨进程分布输入数据(数据并行性)

您可以使用这种模式,它也来自文档

from multiprocessing import Pool

def f(x):
    return x*x

if __name__ == '__main__':
    with Pool(5) as p:
        print(p.map(f, [1, 2, 3]))

推荐阅读