我熟悉 python 的 multiprocessing.Pool
以及相关的 map
和 map_async
调用。 map
和 map_async
采用单个函数并将其应用于可迭代的参数。我想做相反的事情——采用可迭代的函数并将它们应用于单个参数。对于这种操作有一个简单的标准习惯用法吗?
换句话说,我正在寻找类似以下内容的内容:
from multiprocessing import Pool
pool = Pool(4)
functions = (add, subtract, divide, multiply)
args = (1, 2)
result = pool.fmap(functions, args)
print result
# [3, -1, .5, 2]
最佳答案
所以..我建议使用现有的框架并彻底颠覆它。您可以执行如下操作:
from functools import partial
def operation(args, operator):
return operator(*args)
final_op = partial(operation, [1,2])
这或多或少相当于 dano 的解决方案,但我发现这里使用partial 是一种真正保留通用性并避免通过索引访问参数的脆弱性的方法。它还使实际使用方面的事情变得更清晰:
pool = Pool(4)
print pool.map(final_op, (add, sub, div, mul))
关于python - 将 python 函数列表异步应用于单个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24251377/