我有一个使用Dask并行化代码的问题。我有一个Pandas数据框和8核心CPU。因此,我想按行应用某些函数。这里是一个例子:
import dask.dataframe as dd
from dask.multiprocessing import get
# o - is pandas DataFrame
o['dist_center_from'] = dd.from_pandas(o, npartitions=8).map_partitions(lambda df: df.apply(lambda x: vincenty((x.fromlatitude, x.fromlongitude), center).km, axis=1)).compute(get=get)
该代码可以同时运行8个CPU。现在,我遇到了一个问题,即每个进程都会占用大量内存,就像主进程一样。因此,我想使用共享内存进行多线程运行。我尝试将 from dask.multiprocessing import get
更改为 from dask.threaded import get
。但它并没有使用我的所有CPU,而且我认为它只是在单核上运行。