我对使用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,我认为它运行在单核上。
答案 0 :(得分:3)
是的,这是线程和进程之间的权衡: