Joblib auto memmap
Я использую joblib.Parallel, чтобы получить результат нескольких двоичных классификаторов, работающих на одном наборе данных. Каждый классификатор имеет свой собственный векторизатор, поэтому я передаю набор данных каждому процессу в виде списка строк (проблема классификации текста).
Мой код выглядит следующим образом:
joblib.Parallel(n_jobs=-1)(joblib.delayed(_make_item_predictions)(
classifier_path,
documents
) for classifier_path in self.classifiers_path.iterdir())
Documents - это список строк Python с переменной длиной, а classifier_path - это путь каждого из двоичных классификаторов.
Читая документацию JobLib, я обнаружил, что это неэффективно, поскольку большой список строк будет сериализован, а затем десериализован для каждого процесса, выполняемого параллельно. В соответствии с документами, я запомнил список следующим образом:
joblib.dump(documents, "documents_memmap")
documents = joblib.load("documents_memmap", mmap_mode="r")
Эта операция, однако, заняла очень много времени и не оказала никакого влияния на время выполнения процессов. Я сделал ошибку в моей реализации?