Многопроцессорные параллельные циклы с поддержкой не могут быть вложены в потоки

В чем причина такой проблемы в joblib? "Многопроцессорные параллельные циклы с резервной копией не могут быть вложены в потоки, устанавливая n_jobs=1". Что я должен сделать, чтобы избежать такой проблемы?

На самом деле мне нужно реализовать сервер XMLRPC, который выполняет тяжелые вычисления в фоновом потоке и сообщает о текущем прогрессе через опрос от клиента UI. Он использует scikit-learn, которые основаны на joblib.

PS: я просто изменил имя потока на "MainThread", чтобы избежать такого предупреждения, и все выглядит хорошо (работает параллельно, как и ожидалось, без проблем). Что может быть проблемой в будущем для такого обходного пути?

2 ответа

У меня было то же предупреждение, когда я делал прогнозы со sklearn в потоке, используя загруженную модель, которая была оснащена n_jobs > 1. Она появляется, когда вы выбираете модель, она сохраняется с ее параметрами, включая n_jobs.

Чтобы избежать предупреждения (и потенциальной стоимости сериализации), установите n_jobs равным 1 при выборе моделей:

clf = joblib.load (имя_файла_файла).set_params (n_jobs = 1)

Похоже, это связано с этой проблемой в библиотеке JobLib. На момент написания статьи это, похоже, исправлено, но еще не выпущено. Как написано в вопросе, грязное исправление могло бы переименовать основной поток обратно в MainThread:

threading.current_thread().name = 'MainThread'

Другие вопросы по тегам