Hello,

I am trying to build a responsive GUI program. QML.jl (see: 
https://github.com/barche/QML.jl ) works
already nicely in providing a GUI, but for performance reasons I have to do 
the heavy work in the
background.

I am doing the following (very simple test):

addprocs(2)
remotecall(2, include, "remote.jl")

This works. Now I try to execute a function remotely:

remotecall(2, plotme)

This doesn't work:
ERROR: UndefVarError: plotme not defined

The remote module looks like this:

module remote
export plotme

using PyPlot

function plotme()
    println("Hello!")
end
end

If I now execute:

julia> tic();using remote;toc()
WARNING: replacing module remote
elapsed time: 6.517559409 seconds
6.517559409

julia> 

I get the warning:
WARNING: replacing module remote

Why is there this warning? I do not want to import the module twice.
Furthermore this is extremely slow. I loose the speed gain, that I intend
my using multiple processes in the first place.

The remote call works now:
julia> remotecall(2, plotme)
RemoteRef{Channel{Any}}(2,1,8)

julia>     From worker 2:    Hello!

Question:
How can I call a function in a remote worker that imports large libraries
that are slow to import without importing these libraries in the main
process?

Any hints welcome.

Uwe

Reply via email to