我有一大段代码,比如
for i in range(0, len(a))
b[i] = func(a[i])
其中 a 和 b 是长度相同的数组,a 是给定的(并且很大),func 是一些具有很多局部变量但不使用任何全局变量的函数。
我想将 func 的计算分布在多个 CPU 上。大概我需要使用多处理模块,但我还没有找到任何相关的例子。你能帮忙吗?谢谢。
我有一大段代码,比如
for i in range(0, len(a))
b[i] = func(a[i])
其中 a 和 b 是长度相同的数组,a 是给定的(并且很大),func 是一些具有很多局部变量但不使用任何全局变量的函数。
我想将 func 的计算分布在多个 CPU 上。大概我需要使用多处理模块,但我还没有找到任何相关的例子。你能帮忙吗?谢谢。
multiprocessing
请参阅文档中的第一个代码示例:
from multiprocessing import Pool
# you could define `func`, `a` here
if __name__=="__main__":
p = Pool() # use all available CPU cores
b = p.map(func, a)
使用进程池。您可以在我的 github 中查看完整示例:https ://github.com/mariazverina/codejam/blob/master/src/main.py
from multiprocessing import Pool
p = Pool(4) # set to number of cores
b = p.map(func, a)