我知道这个问题有很多例子,但是我想知道这个想法的最基本原理,即如何使用简单定义的函数运行带有多个参数的多重处理,如下面的代码示例。此函数从带有数字的三个独立列表中获取三个参数,并输出单个数字1800。
site[]
我希望应用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)
中的pool
和map
来并行执行它。我的想法是应用类似以下的内容:
multiprocessing
我相信有更好的方法,我对此表示赞赏。但是,我的意图是,我真的很想知道这是否可行。如果可行,该怎么办?提前致谢。
答案 0 :(得分:1)
是的,这非常可行。您的方法是好的,并且会做得很好。如果您有多核计算机,也可以尝试使用线程。在多处理中,使用多个进程,而在多线程中,产生多个线程。我认为您的问题很简单,可以由线程处理。因此,您可以选择线程。
回复评论: 如果要使用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__'
否则您的过程将冻结