阅读R-project网站,有一些(不清楚的)关于R的多线程的引用,但还不清楚基础产品和CRAN库是如何编译的。
Revolution Analytics提供多线程基础(?)适用于Windows和Redhat的下载。
其他一些Linux发行版也会包含多线程R(和软件包)吗?
发布于 2012-05-31 22:05:33
你弄糊涂了。
R(以及在此之前的S)内部是单线程的,并且几乎肯定会保持单线程。据我所知,Duncan Temple Lang的PhD工作就是为了克服这一点,如果他不能做到这一点...
尽管如此,还是有一些多线程的情况:
fork()。这就是多核软件包的先驱,也是并行软件包现在的延续。中。
发布于 2017-12-03 01:56:55
Renjin是一个基于JVM的解释器实现。他们声称:
与GNU R不同,人人网是多线程的,可以在平台即服务的环境中愉快地运行,例如Google Appengine、AWS Elastic Beanstalk、Heroku或Microsoft Azure。
#resource http://www.bedatadriven.com/products/renjin.html
尽管如此,我们从R调用的实际R包可能不是线程安全的。
请参阅Jep文档,从从Java/Scala调用CPython的角度解释此问题。
https://github.com/ninia/jep/wiki/How-Jep-Works#threading-complications
由于JNI的复杂性和局限性,创建Jep实例的线程必须重用于对该Jep实例的所有方法调用。Jep将强制执行此操作,并抛出提到无效线程访问的异常。(在未来,我们希望简化或提供线程管理实用程序)。
同一线程不能同时运行多个Jep实例。虽然这在技术上是允许的,但它可能会扰乱线程状态,并导致Python解释器中的死锁。这可能会更改为在将来遇到异常时抛出异常。
因此,Renjin似乎有希望,但实际使用的二进制(C/C++等)包需要验证线程安全性。
还有其他的R实现
https://dynamicecology.wordpress.com/2014/01/14/r-isnt-just-r-anymore/
发布于 2014-11-13 09:50:30
那this呢?由于该页面的修改日期是在2014年5月,我认为提到的包相对较新,或者可能那些在第一个答案写出来的时候还不稳定。
https://stackoverflow.com/questions/10835122
复制相似问题