使用Spacy和Joblib从另一个文件调用并行化脚本时,如何保护导入

时间:2019-05-01 07:41:14

标签: python parallel-processing spacy joblib

我知道Windows不支持分支的事实,因此您需要使用以下方式保护并行化功能:

filename -> parallel.py

def do_parallelization(df):
   partition_size = int(np.ceil(len(df)/n_job))
   partitions = minibatch(df.values, size=partition_size)
   executor = Parallel(n_jobs=n_job, backend="multiprocessing", prefer="processes", verbose=5)
   do = delayed(partial(transform_texts_new, nlp))
   tasks = (do(batch_id, small_df, col_name) for batch_id, small_df in enumerate(partitions, 1))
   result = executor(tasks)
   return result

if __name__ == "__main__":
    df = pd.read_csv("some_df.csv")
    result = do_prallelization(df)

当您将其作为脚本运行时,效果很好。 但是我需要将此集成到程序中,所以我有一个协调器文件:

filename -> orch.py

import parallel as p
df = pd.read_csv("some_df.csv")
result = p.do_parallelization(df)

不是为我工作吗?

  

ImportError:[joblib]在不支持分支的系统上尝试执行并行计算而不保护您的导入。要在脚本中使用并行计算,必须使用“ if ____name____ =='____main____'”保护主循环。请参阅Parallel上的joblib文档以获取更多信息

0 个答案:

没有答案