如何在Julia中定义一个宏?

时间:2015-08-11 18:06:23

标签: parallel-processing macros julia

我有一个微不足道的宏

macro lit_str(s)
    s
end

我用来生成正则表达式模式。 (上下文here)。通常我将它包装在一个名为HelperFunctions的模块中(并使用```export @lit_str)导出它。我试图在通过RemoteRef调用的函数中使用它,但即使我这样做

@everywhere使用HelperFunctions

我收到类似

的错误
exception on exception on 3: exception on 2: 4: ERROR: @lit_str not defined
 in eval at C:\cygwin\home\vagrant\buildbot\slave\package_win8_1-x64\build\base\sysimg.jl:7
 in anonymous at multi.jl:1305
 in anonymous at multi.jl:855
 in run_work_thunk at multi.jl:621
 in anonymous at task.jl:855
ERROR: @lit_str not defined
 in eval at C:\cygwin\home\vagrant\buildbot\slave\package_win8_1-x64\build\base\sysimg.jl:7
 in anonymous at multi.jl:1305
 in anonymous at multi.jl:855
 in run_work_thunk at multi.jl:621
 in anonymous at task.jl:855
ERROR: @lit_str not defined
 in eval at C:\cygwin\home\vagrant\buildbot\slave\package_win8_1-x64\build\base\sysimg.jl:7
 in anonymous at multi.jl:1305
 in anonymous at multi.jl:855
 in run_work_thunk at multi.jl:621
 in anonymous at task.jl:855

有没有办法导出宏,以便它可以被使用remoteref生成的进程使用?

1 个答案:

答案 0 :(得分:5)

这是一个明智的选择,但我会在这里提出解决方案,以防其他人遇到同样的问题。我需要做

addprocs(numprocs)

@everywhere using WhatNot

因为我在Jupyter中这样做而不是通过调用julia -p 8 myfile.jl