Python多进程调用R代码优化问询:性能与效率提升问题
问题与优化需求
背景说明
我曾尝试用Rcpp加速R中特定代码行,但首次尝试耗时过长,且看到Dirk在Stack Overflow的评论指出“通过C++运行R函数无法提速”,遂放弃该方案。
我编写了一个脚本,其中的run_everything函数可根据传入参数生成word2vec嵌入,再通过rpy2调用R代码完成统计计算,并使用R代码的输出结果。
现有代码结构
Python核心函数
def run_everything(*args): # 生成词嵌入、计算余弦相似度并写入csv # 通过rpy2调用R函数,执行异常值识别计算并再次写入csv # 利用R函数的输出完成最终操作,写入另一个csv文件
并行调用脚本
from build_model_and_run_r_code import run_everything from multiprocessing import Pool # 定义传入进程池的参数 args_for_pool if __name__ == '__main__': with Pool(8) as pool: pool.starmap(run_everything, args_for_pool)
当前待优化问题
- 电脑配备12核CPU,仅用8个进程,但运行时电脑仍明显卡顿;
- 48组超参数组合需3小时完成(已比串行快一半),但希望进一步提升效率,其中R代码的计算耗时占比最大,关键耗时代码行如下:
outly = compBagplot(dat_filt, "sprojdepth", options=list(maxiter = 500))
内容的提问来源于stack exchange,提问作者newbie
相关产品推荐
相关产品推荐

