具有多个参数的定义函数的简单并行多处理



我知道这个问题有很多示例,但我希望知道如何使用多个参数运行多个参数的简单定义函数,如下面的代码示例。此功能从三个独立列表中获取三个参数,并输出一个数字1800。

list1 = [1,2,3,4,5]
list2 = [6,7,8,9,10]
list3 = [11,12,13,14,15]
def somefunc(x, y, z):
        out = 0
        for i in range(len(x)):
                num = x[i] * y[i] * z[i]
                out = out + num
        return(out)
somefunc(list1,list2,list3)

我希望从multiprocessing应用poolmap并行执行。我的想法是应用以下内容:

import multiprocessing as mp
p = mp.Pool(4)
output = p.map(somefunc, <PARAMETERS "x, y, z">, <ITERATION "i">))
p.close()

我相信有更好的方法,我感谢它。但是,我对这篇文章的意图是我真的很想知道这是否可行。如果可以的话,该怎么办?提前致谢。

是的,这是非常可行的。您的方法很好,会很好。如果您拥有多核计算机,也可以尝试使用线程。在多处理中,使用多个过程,而在多线程中,则使用多个线程。我认为您的问题很简单,可以通过线程处理。因此您可以选择线程。

回复评论:如果您想使用pool.map,那么您将在代码中进行一些更改。

list1 = [1,2,3,4,5]
list2 = [6,7,8,9,10] 
list3 = [11,12,13,14,15]
def somefunc(list):
    x = list[0]
    y = list[1]
    z = list[2]
    out = 0
    for i in range(len(x)):
            num = x[i] * y[i] * z[i]
            out = out + num
    return(out)
import multiprocessing as mp
if __name__ == '__main__':
    p = mp.Pool(4)
    output = p.map(somefunc, [[list1, list2, list3]])
    p.close()
    print(output)

保持行很重要 if __name__ == '__main__'否则您的过程将冻结

相关内容

  • 没有找到相关文章

最新更新