问题描述
- 在逐个处理大量数据时,并行完成for循环能够节约大量时间
- 一个可供参考的例子是:已有博文
- 但在实际中,上述例子无法直接使用。原因包括:
-
- 上述例子需要一个循环函数;
-
- 上述例子中循环函数只能传入一个参数,而实际上会传入很多参数;
-
解决方法
-
对于问题1:
- 将for循环后的所有内容重组为一个循环函数;
-
对于问题2:
- 使用全局变量完成除了迭代参数外其他参数的传递。
-
示例代码如下:
def save_data():
global opt,A_paths, B_paths, lidar_timestamps, radar_timestamps, radar_gts, lidar_gts, save_data_path
datasize = len(A_paths)
print("datasize:", str(datasize))
index = [x for x in range(98, datasize)]
p = multiprocessing.Pool(6)
p.map(save_data_eachframe,index)
p.close()
p.join()
return
def save_data_eachframe(index):
global opt,A_paths, B_paths, lidar_timestamps, radar_timestamps, radar_gts, lidar_gts, save_data_path
...