最近遇到了标题所述的问题。Parallel给定n_jobs=n,并行n个任务和n成正比,下面记录自己怎么解决的。
经过探索,发现是自己的文件不规范:
- 主要执行py文件没有 if name == ‘main’。把所有Parallel需要用到的函数和变量全部定义在global里,而且global import libraries只import Parallel需要用到的,其他的不需要的东西全部定义在main函数里。
加上这个部分之后在windows上成功实现了并行但是远程服务器还是不行 - 把模块包导入Parallel需要非常多的时间(远大于运行一次任务的时间)的话,可以先跑一个小规模的Parallel作为Warm up。注意这里Parallel(n_jobs) 的n_jobs数量需要和之后正式并行个数相同,这一步是为了让每一个Worker都能把需要的包导入进去,节约下面导入包的时间。