我想在我的计算机上跨单独的核心运行一个简单的功能。我的电脑有四个核心。
首先,一个简单的功能:
def exp(x):
return x**2
现在我想给这个函数分别使用四个数字,并使用不同的核心来应用函数,以便并行完成计算。
我这样想:
import multiprocessing as mp
if __name__ == "__main__":
check = [1, 5, 6, 8]
pool = mp.Pool( mp.cpu_count())
results = pool.map(exp, check)
但这似乎执行然后它被挂起,所以我不确定我在这里正确使用池。
我也试过这个:
results = [pool.apply_async(cube, args=(x,)) for x in range(1,7)]
output = [p.get() for p in results]
但它再次挂在最后一行。
我在ancondas spyder环境中使用ipython,这也可能是为什么?也许我需要使用ipythons并行?
编辑:
我的问题的答案在这里找到,multiprocessing in IPython console on Windows machine - if __name_ requirement