关于以下代码片段的功能,我有几个问题。
def f(x):
return x*x
if __name__ == '__main__':
pool = Pool(processes=10) # start 10 worker processes
result = pool.apply_async(f, [10]) # evaluate "f(10)" asynchronously
print result.get(timeout=1)
print pool.map(f, range(10)) # prints "[0, 1, 4,..., 81]"
总而言之
pool = Pool(processes=10)
,如果我在 4 个处理器架构(四核)上运行并实例化超过 4 个工作进程,因为在任何时间点只能执行多达 4 个进程,它甚至会有所不同吗?在
pool.map(f,range(10))
函数中,如果我实例化 10 个工作进程,并且可能有 50 个映射器,python 是否会在它们完成执行时将映射器分配给进程,或者我应该弄清楚创建了多少个映射器并在线pool = Pool(processes=number_of_mappers)
?
这是我第一次尝试并行化任何东西,我非常困惑。所以任何帮助将不胜感激。
提前致谢!