Julia:在子/子模块中使用@parallel或pmap

时间:2017-11-18 09:48:23

标签: parallel-processing julia

在以下文件中

test.jl

push!(LOAD_PATH, string(pwd(), "/lib/"))
@everywhere using Parent
addprocs(2)
Parent.Child.test()

LIB / Parent.jl

@everywhere module Parent
    struct INT
        i::Int64
    end
    include("Child.jl")
end

LIB / Child.jl

module Child
    import Parent
    function test()
        a = [1, 2, 3, 4, 5]
        @parallel (+) for x in a
            i = Parent.INT(x)
            println(x)
            x
        end
    end
end

我收到以下错误:

% julia test.jl 
ERROR: ERROR (unhandled task failure): On worker 3:
UndefVarError: Parent not defined

使用@parallel for或pmap会得到相同的错误。

但是,如果我把所有模块放在任何模块之外,那么代码就可以正常工作。

删除“addprocs(2)”然后一切正常。

我的项目由许多模块和子模块组成,并且希望保留模块化结构。但是,我对Julia很新,可能不知道如何正确使用它。我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

我解决了我的问题!

from flask import Flask, render_template, request, url_for, jsonify

app = Flask(__name__)


@app.route('/')
def index():
    return render_template('voting.html')

@app.route('/vote', methods=['POST'])
def vote():
    data = request.get_json()
    result = str(data)

    if (data['userid'] == 0):

        if (data['up']):
            data['count'] = data['count'] - 1

        if (data['down']):
            data['count'] = data['count'] + 1

        return jsonify({'visitor' : True, 'count' : data['count'] }), 200, {'ContentType':'application/json'} 

    return result


if __name__ == "__main__":
    app.run(debug=True)

需要成为test.jl上的第一件事