Как быстрее определить язык с помощью Dask? - PullRequest
1 голос
/ 02 апреля 2020

Я использую Dask для параллельных вычислений и хочу определить язык предложений в столбце, используя langdetect. Тем не менее, я все еще не могу набрать скорость получения языка строк в столбце.

Ниже приведен мой код:

import dask.dataframe as dd
data = dd.read_csv('name.csv')# has a column called short_description
def some_fn(e):
    return e['short_description'].apply(langdetect.detect)

data['Language'] = data.map_partitions(some_fn, meta='string')# adding a new column called Language.

Этот файл csav содержит 800000 строк, каждая из которых содержит ок. 20 слов длинных предложений.

Любое предложение, как я могу быстрее определить язык, потому что в настоящее время это занимает 2-3 часа.

1 Ответ

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

По умолчанию dask dataframe использует пул потоков для обработки. Я предполагаю, что ваш алгоритм определения языка написан на чистом Python (а не на C / Cython, как большинство Pandas) и поэтому ограничен GIL. Это означает, что вы должны использовать процессы, а не потоки. Вы можете попросить Dask использовать процессы, добавив ключевое слово scheduler="processes" к любым вычислительным или постоянным вызовам

df.compute(scheduler="processes")

Более подробную информацию о различных планировщиках Dask и о том, когда их использовать, можно найти здесь: https://docs.dask.org/en/latest/scheduling.html

...