python - 将 python 函数列表异步应用于单个参数

标签 python multithreading asynchronous multiprocessing

我熟悉 python 的 multiprocessing.Pool 以及相关的 mapmap_async 调用。 mapmap_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/

相关文章:

python - 为什么在 python 中使用 **kwargs?与使用命名参数相比,现实世界有哪些优势?

c++ - 像线程一样调用类方法

c - 异步API

typescript - 避免在 Cypress 中使用 .wait() 来加载所有元素

javascript - 响应回调时使用 Promise

Python Pandas 按二级索引(或任何其他级别)切片多索引

Python 循环不应该工作但仍然可以工作

python - 类似于 Flask 蓝图的横向扩展 celery 应用程序

java - 如何设置 Java DelayQueue 的容量

python - 避免重复结果 多线程 Python