我知道这个问题有很多示例,但我希望知道如何使用多个参数运行多个参数的简单定义函数,如下面的代码示例。此功能从三个独立列表中获取三个参数,并输出一个数字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
应用pool
和map
并行执行。我的想法是应用以下内容:
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__'
否则您的过程将冻结