On Monday, August 10, 2015 01:13:15 PM Tony Kelman wrote:
> Should
> probably use some different extension for that, .jls or something, to avoid
> confusion.

Yes. That has been sufficiently confusing in the past, we even cover this here: 
https://github.com/JuliaLang/JLD.jl#saving-and-loading-variables-in-julia-data-format-jld

--Tim

> 
> On Monday, August 10, 2015 at 12:45:35 PM UTC-7, Stefan Karpinski wrote:
> > JLD doesn't support serializing functions but Julia itself does.
> > 
> > On Mon, Aug 10, 2015 at 3:43 PM, Andrei Zh <faithle...@gmail.com
> > 
> > <javascript:>> wrote:
> >> I'm afraid it's not quite true, and I found simple way to show it. In the
> >> next code snippet I define function `f` and serialize it to a file:
> >> 
> >> julia> f(x) = x + 1
> >> f (generic function with 1 method)
> >> 
> >> julia> f(5)
> >> 6
> >> 
> >> julia> open("example.jld", "w") do io serialize(io, f) end
> >> 
> >> 
> >> Then I close Julia REPL and in a new session try to load and use this
> >> function:
> >> 
> >> julia> f2 = open("example.jld") do io deserialize(io) end
> >> (anonymous function)
> >> 
> >> julia> f2(5)
> >> ERROR: function f not defined on process 1
> >> 
> >>  in error at error.jl:21
> >>  in anonymous at serialize.jl:398
> >> 
> >> So deserialized function still refers to the old definition, which is not
> >> available in this new session.
> >> 
> >> Is there any better way to serialize a function and run it on an
> >> unrelated Julia process?
> >> 
> >> On Monday, August 10, 2015 at 2:33:11 PM UTC+3, Jeff Waller wrote:
> >>>> My question is: does Julia's serialization produce completely
> >>>> self-containing code that can be run on workers? In other words, is it
> >>>> possible to send serialized function over network to another host /
> >>>> Julia
> >>>> process and applied there without any additional information from the
> >>>> first
> >>>> process?
> >>>> 
> >>>> I made some tests on a single machine, and when I defined function
> >>>> without `@everywhere`, worker failed with a message "function myfunc
> >>>> not
> >>>> defined on process 1". With `@everywhere`, my code worked, but will it
> >>>> work
> >>>> on multiple hosts with essentially independent Julia processes?
> >>> 
> >>> According to Jey here
> >>> <https://groups.google.com/forum/#!searchin/julia-users/jey/julia-users/
> >>> bolLGcSCrs0/fGGVLgNhI2YJ>, Base.serialize does what we want; it's
> >>> contained in serialize.jl
> >>> <https://github.com/JuliaLang/julia/blob/master/base/serialize.jl>

Reply via email to