ipython并行集群并行装饰器和更高阶函数

时间:2015-05-29 14:29:28

标签: python ipython python-decorators ipython-parallel

我想采用一个现有的函数(例如scikit-learn:特别是“predict”函数),并将多个核应用于某个数据集。

我的第一个天真的方法:

def parallel_predict(classifier):
    @dview.parallel(block=True)
    def predict( matrix ):
        return classifier.predict(matrix)
    return predict

不起作用(多个核心不会开始旋转)。有没有办法使这项工作?

或者某种方式将“不可迭代”的函数传递给@dview.parallel函数?

1 个答案:

答案 0 :(得分:0)

一些想法,都基于remote execution doc。我已经习惯了@remote装饰师,而不是你曾经使用的@parallel装饰师,但希望它们仍适用于你的情况。 (由于某种原因,今天似乎无法加载that doc

远程执行是否无法正常工作,因为引擎无法访问classifier模块?如果是这样,可以通过使用import(根据this example)或添加with dview.import_sync(): import classifier装饰器(来自@require('classifier'):)明确地向装饰函数添加x = e0.execute('1/0') print x.metadata['error'] x = predict print x.metadata['error'] 语句来解决此问题。同一部分的文档)。至于最后一个选项,不确定多个装饰器如何相互作用(可能最容易让它变成一个重击)。

第二个想法是你可以检查远程异常(here's the doc on that)。这比没有得到任何回报要明确得多。例如,像:

<activity android:theme="@android:style/Theme.Dialog">
<activity android:theme="@style/CustomTheme">