在 Windows 系统中,由于采用了多进程系统 (spawn),发送给 pandarallel 的函数必须是自包含的,不应依赖外部资源。
import psutil
from pandarallel import pandarallel
pandarallel.initialize(nb_workers=psutil.cpu_count(logical=False))
# 生成一个长度5,000,000的df
df_size = int(5e6)
df = pd.DataFrame(dict(a=np.random.randint(1, 8, df_size),
b=np.random.rand(df_size)))
def func(x):
import math # 注意导入包的位置
return math.sin(x.a**2) + math.sin(x.b**2)
%%time
res = df.apply(func, axis=1)
%%time
res_parallel = df.parallel_apply(func, axis=1)