这是我的R代码。
resultFuntion<-function(var1,var2){
path<-"/home/uvionicstech/Desktop/R_TENS/"
source(paste(path,'rtest.R',sep=''))
n<-1000
value<-rnorm(n)
sum=var1+var2
rtest_out<-rtest(100,200)
result<-value*sum*rtest_out
return (result)
}
RTEST ---&GT;用于添加2个整数的函数
尝试使用rpy2从python调用此R函数,并将结果写入单独的文件中。
这是我的python代码。
import rpy2.robjects as ro
import numpy as np
import time
from joblib import Parallel
from multiprocessing import Process, Queue
var1=2
var2=31
output_location='/Desktop/pro1/'
path="/Desktop/R_TENS/"
def Analysis(var1,var2):
r=ro.r
r.source(path+"file.R")
p=r.resultFuntion(var1,var2)
filename1=str(i)+"output.txt"
newfile=output_location+filename1
with open (str(newfile),'w') as file:
file.write('result: %s for {}'.format(i) %(p))
return p
file.close()
threads=[]
for i in range(20):
q = Queue()
t1=Process(target=Analysis,name='thread{}'.format(i),args=(var1,var2))
t1.start()
Parallel(n_jobs=20, verbose=0,backend="threading")
threads.append(t1)
print('{} has started \n'.format(t1.name))
for i in threads: # to know threads used
i.join()
此过程并行运行。因为所有文件都是同时写的。然后我尝试将输入作为json文件和一些其他R函数用于某些分析报告。这个文件编写过程需要花费很多时间。所以并行处理的优势就不在这里。对于写入20个文件大约需要75秒。我的新R函数包含许多for循环。我已将其转换为foreach循环以进行并行处理。但是我在python中的rpy2库工作不正常。有人知道json文件无法使用这种方法吗?