Is there a way to share an instance of a non-bits type between the master process and one or more workers? I’d like to do something like the following:
addprocs(1)
@everywhere MyType
x
end
@everywhere function print_x_twice(mt::MyType)
println(mt.x)
sleep(5)
println(mt.x)
end
mt = MyType(1)
shared_ref = SharedRef(mt)
@spawnat 2 begin
mt = get(SharedRef)
print_x_twice(mt)
end
sleep(.1)
mt.x = 100
and see output of
From worker 2: 1
From worker 2: 100
ie., I’d like changes made to mt
on the master process to be visible on the worker. Of course, SharedRef
isn’t a real type. Is there a way to do this? I’d think RemoteChannel
, but I’ve read through the parallelism documentation half a dozen times and still don’t really understand how to use remote channels; certainly I haven’t been able to get the above working with a remote channel.