python - Pandarallel 并不快
问题描述
我试图加快我的原始程序,但是当我查看我的 CPU 统计数据时,只使用了一个工人。我原来的程序:
import pandas as pd
import numpy as np
other_arg=...
def long_duration_function(i,j,other_arg):
# do some complicated and slow calculations
if ...:
result=None
else:
result=DataFrame(...)
return result
df=pd.DataFrame()
for i in range(100):
for j in range(100):
df.append(long_duration_function(i,j,other_arg),ignore_index=True)
我认为使用并行化来加速程序可能会更快,所以我开始更改程序。
import pandas as pd
import numpy as np
from pandarallel import pandarallel
pandarallel.initialize() #returns Pandarallel will run on 8 workers
def long_duration_function(i,j,other_arg):
# do some complicated and slow calculations
if ...:
result=None
else:
result=DataFrame(...)
return result
def parallel_splitter(row,other_arg):
long_duration_function(row.name%100,row.name//100,other_arg)
df_empty(np.nan,index=range(100*100),columns=[...])
df=df_empty.parallel_apply(parallel_splitter,axis=1,arg=other_arg).dropna(how='all')
出乎我的意料,这个程序没有使用所有的 CPU 工作者,也没有比原来的程序快。我做错了什么还是有更好的方法通过并行计算来加速这个程序?
解决方案
推荐阅读
- angular - 如何截断Angular中的文本?
- bash - 打开终端时打印最后完成的作业(Ubuntu 16.04)
- javascript - 如何在本机反应中从数组中删除重复项
- prolog - 我们如何在 prolog 中表示复杂的整数加法和乘法?
- db2 - 当 Spring Batch 插入 BATCH_JOB_EXECUTION 时出现 BadSqlGrammarException
- javascript - 使用 React Native 解析 RSS 提要时,如何获取描述标签内的描述和 imageUrl?
- flutter - 在颤动中提交后如何获取复选框的自动递增和递减值
- visual-studio - 每次构建后将所有 TypeScript 文件复制到输出目录
- android - 如何在android中为矢量图像添加渐变颜色并在底部导航视图中使用
- c - #C #string #array 如何用 C 编程这个项目?