python - apply_sync 与串行速度相同
问题描述
我有一个在 CPU 上需要 128 毫秒的函数,我尝试将它并行化,但它具有相同的效果,根本没有加速。我不确定我在那里做错了什么。
这是计算成本高的函数:
def compute(id, x,y,frame_id,df_region, region_buffered, df_line):
gb = ('trajectory_id',)
global general_pd
general_pd.loc[len(general_pd)] = [id, x,y, frame_id]
grouped = general_pd.loc[general_pd['trajectory_id'] == id]
rpp = RawParameterProcessor(grouped, df_line, frame_idx, df_region, region_buffered, gb=gb, v_thresh=5 / 3.6)
df_parameter_car = rpp.compute()
return df_parameter_car
我在 tensorflow 对象检测中使用它,对检测到的对象执行计算:
请注意,以下代码在主循环中执行,我从 cv2 视频捕获中获取该数据。
对于视频捕获的每一帧
for trk in car_detections:
trk = trk.astype(np.int32)
p = np.array([[((trk[1] + trk[3]) / 2, (trk[0] + trk[2]) / 2)]], dtype=np.float32)
center_pt = cv2.perspectiveTransform(p, H)
ptx = center_pt.T.item(0)
pty = center_pt.T.item(1)
df_cars = pool.apply_async(compute, (trk[4], ptx, pty, frame_idx, df_region, region_buffered, df_line,))
results.append(df_cars)
for result in results:
genera_data_pd_cars = genera_data_pd_cars.append(result.get())
解决方案
推荐阅读
- sql - SQL Server 新手,正在寻求日期时间转换的帮助
- android - 如何更新分页列表中的特定项目
- pyparsing - 正确禁止评论
- sql - 我在 SQL 中有三列,我正在尝试获取所有匹配的列
- security - 如何保护 Ubuntu 上 ASP.NET Core 生产环境中的数据库连接字符串?
- python - Selenium XPath 逻辑 AND 加入多个 contains() 过滤器?
- internet-explorer - 如何让 Vuetify 在 CDN 中与 IE 兼容
- excel - Excel 公式中的双重引用
- php - 删除缺货商品的阅读更多按钮
- sql - 雅典娜聚合列表结构字符串字符串到字符串列表