这个 joblib Parallel 语法在做什么?这么多括号

What is this joblib Parallel syntax doing? So many parentheses

Scikit-learn 经常使用 joblibParallel(n_jobs=n_jobs)(delayed(function)(param_to_function) for param_to_function in iterable).

等调用并行化

This helpful question and answer 表示这个双括号业务意味着第二个集合被传递给涉及第一个集合的调用返回的任何内容,如果返回的东西是可调用的,这很有意义。

但是这里Parallel(n_jobs=n_jobs)返回的东西应该是Parallel对象吧?然后我们将第二个括号中的循环给定的 generator 对象传递给它。在这样的构造之后,您不应该能够直接将生成器传递给 class 。对象和输入之间应该有一些函数调用。或者在 python 中是否有 __some_special_function__ 适用于此语法?

这个语法到底在做什么?

"special function"可能只是一个__call__ method。可以像调用函数一样调用具有该方法的 class 实例。在这种情况下,Parallel 大概定义了 __call__ 来接受一个生成器。

(请注意,这并不是说像您的示例那样编写代码是个好主意。这会造成不必要的混淆。)