Мне известно о том, что 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____'".Пожалуйста, смотрите документацию JobLib на Parallel для получения дополнительной информации