Итерирование по массиву многопоточным - PullRequest
0 голосов
/ 03 апреля 2020

У меня возникли некоторые трудности, связанные с написанием следующего многопоточного кода. Я предполагаю, что это просто синтаксическая вещь, как написать это, вероятно.

Я хочу обработать каждую col параллель, каждый столбец имеет свой vfc - массив в одном и том же data объекте.

Заранее спасибо

        with multiprocessing.Pool() as pool:

            for col in list_column_names:
                # returns an array
                vfc = self.get_vfc(col)

                data[vfc] = data[col].apply(lambda x: self.smth(x, self.model))

1 Ответ

0 голосов
/ 03 апреля 2020

Вы фактически не используете созданный вами пул. Кроме того, работа с лямбда-выражениями в многопроцессорной обработке может быть проблематичной c, ср. Python Карта многопроцессорного пула: AttributeError: Невозможно выбрать локальный объект Вы можете попробовать что-то вроде этого:

with multiprocessing.Pool() as pool:      
   pool.map(self.cf, [data[c] for c in data])

, где функция cf определена на уровне класса и содержит логика c, предназначенная для использования apply и вашей лямбды. Возможно также определить ваш фрейм данных на уровне класса.

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