parallel-processing - 如何在 Julia 中到处定义宏?

标签 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 生成的进程使用吗?

最佳答案

这是显而易见的,但我会将解决方案放在这里,以防其他人遇到同样的问题。我需要做

addprocs(numprocs)

之前

@everywhere using WhatNot

因为我是在 Jupyter 中执行此操作,而不是通过调用 julia -p 8 myfile.jl

关于parallel-processing - 如何在 Julia 中到处定义宏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31948930/

相关文章:

在 C 中使用 MPI 进行代码并行化

c++ - 新的 __LINE__ 什么时候开始?

macros - Racket 宏省略语法

julia - 尽管使用方法(...)显示,但未找到函数签名

julia - `LineNumberNode`中剥离 `Expr`的通用函数(应该可以处理:macrocalls)?

database - 如何使用数据库服务器进行分布式作业调度?

multithreading - Flutter Dart : How can we achieve multithreading like python or java in dart

r - 从函数中使用 jags.parallel(R 语言错误在 get(name, envir = envir) : object 'y' not found)

c++ - 在运行时更改宏的值

julia - 如何在宏中将字符串转换为特定的枚举类型?