首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将来是否可以导出rJava对象(R中的异步计算包)

将来是否可以导出rJava对象(R中的异步计算包)
EN

Stack Overflow用户
提问于 2018-04-23 18:40:16
回答 1查看 155关注 0票数 0

我正试图通过在Linux上使用mutlicore plan来加快我的R代码的运行速度。在将来的定义中,我将创建一个java对象并尝试将其传递给.jcall(),但是将来我将为java对象获取一个空值。有人能帮我解决这个问题吗?以下是示例代码-

代码语言:javascript
复制
    library("future")
    plan(multicore)

    library(rJava)
    .jinit()

    # preprocess is a user defined function
    my_value <- preprocess(a = value){
      # some preprocessing task here
      # time consuming statistical analysis here
      return(lreturn) # return a list of 3 components
    }
    obj=.jnew("java.custom.class")

    f <- future({
      .jcall(obj, "V", "CustomJavaMethod", my_value)
    })

基本上,我正在处理大量的流数据。在上面的代码中,我将流数据字符串发送到用户定义的函数进行统计分析,并返回3个组件的列表。然后希望使用自定义java方法CustomJavaMethod将此列表发送到自定义Java类java.custom.class进行进一步处理。在不使用future的情况下,我的代码运行良好。但是我在一分钟内得到了12个流记录,然后我的代码变得很慢,观察到处理延迟。

目前我使用的是16核的Unix。在使用未来包之后,我的过程完成得很快。我已经回溯了我的代码,在.jcall中发生了一些错误。

希望这能澄清我的痛苦。

EN

回答 1

Stack Overflow用户

发布于 2018-04-25 02:14:26

问题中的代码调用未知的Method1方法,my_value是未定义的,...很难知道你真正想实现的是什么。

看看下面的例子,也许你能从中得到启发:

代码语言:javascript
复制
library(future)
plan(multicore)

library(rJava)
.jinit()

end = .jnew("java/lang/String", " World!")

f <- future({
  start = .jnew("java/lang/String", "Hello")
  .jcall(start, "Ljava/lang/String;", "concat", end)
})

value(f)
[1] "Hello World!"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49979079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档