这个joblib是什么并行语法呢?这么多括号

问题描述 投票:1回答:1

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对象。在构造之后,您不应该直接将生成器传递给类。对象和输入之间应该有一些函数调用。或者在python中有__some_special_function__可以使用这种语法吗?

这个语法到底是做什么的?

python parallel-processing scikit-learn joblib
1个回答
2
投票

“特殊功能”可能只是一个__call__ method。可以像调用函数一样调用具有该方法的类的实例。在这种情况下,Parallel可能会定义__call__来接受生成器。

(注意,这并不是说编写像你的例子这样的代码是一个好主意。这是不必要的混淆。)

© www.soinside.com 2019 - 2024. All rights reserved.