Как защитить импорт при вызове сценария распараллеливания из другого файла, используя Spacy & Joblib - PullRequest
0 голосов
/ 01 мая 2019

Мне известно о том, что 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 для получения дополнительной информации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...