我正在使用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个小时。
发布于 2020-04-05 00:32:28
默认情况下,dask dataframe使用线程池进行处理。我猜测您的语言检测算法是用纯Python (而不是像大多数Pandas那样的C/Cython )编写的,因此受到GIL的限制。这意味着你应该使用进程而不是线程。您可以通过将scheduler="processes"关键字添加到任何compute或persist调用来要求Dask使用进程
df.compute(scheduler="processes")有关Dask的不同调度器以及何时使用它们的更多信息,请访问此处:https://docs.dask.org/en/latest/scheduling.html
https://stackoverflow.com/questions/60995598
复制相似问题