Многопроцессорная обработка в Python - Как использовать все ядра при запуске DBSCAN? - PullRequest
0 голосов
/ 29 ноября 2018

Я кодировал некоторый код, используя DBSCAN, но при запуске функции прогнозирования программа использует только 1 ЦП (100%), тогда как другие ЦП свободны.Любой может изменить приведенную ниже функцию "dbscan_predict", чтобы она могла использовать все 8 процессоров, которые есть у моего компьютера ??? (ЦП 4 ядра, 8 потоков)

def dbscan_predict(dbscan_model, X_new, metric=np.linalg.norm):
# Result is noise by default
y_new = np.ones(shape=len(X_new), dtype=int)*(-1)

# Iterate all input samples for a label
for j, x_new in enumerate(X_new):
    # Find a core sample closer than EPS
    for i, x_core in enumerate(dbscan_model.components_): 
        if metric(x_new - x_core) < dbscan_model.eps:
            # Assign label of x_core to x_new
            y_new[j] = dbscan_model.labels_[dbscan_model.core_sample_indices_[i]]
            break

return y_new

1 Ответ

0 голосов
/ 30 ноября 2018

Используйте многопроцессорный пакет python.Вы можете определить функцию и разделить ваш фрейм данных внутри метода multiprocessing.pool ().Тогда это будет распределять работу по разным ядрам.

Вы можете проверить количество ядер, используя multiprocessing.cpu_count (), а затем принять решение на основе этого.

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