首先我想说的是,我是python编程的初学者。所以我的错误很可能是显而易见的。最近我试图通过使用多重处理来提高代码的性能。但我还没成功,希望你能帮我。你知道吗
我有一个需要为数据集的每条记录执行的计算。我总共有345张唱片。对于每个记录,我的计算需要大约0.0016-0.002秒,总计0.552-0.6秒。从技术上讲,我的CPU有12个核心。因此,我希望通过并行性将计算速度提高到0.07到0.08秒左右。由于计算完全独立于其他数据记录,我不需要任务之间的任何同步或共享内存。你知道吗
我选择了执行多处理池功能。我的代码或多或少是这样工作的:
p = multiprocessing.Pool(core_num)
for record in range(0, dataset_len):
task_list.append((const1, const2, dataset[record, :], task_idx))
output = p.map(calculation_func, task_list)
p.close()
const1,const2是计算函数calculation\u func计算数据所需的常量。task_idx只是一个标识符,用于在计算之后将数据按正确的顺序排列。只有执行
output = p.map(calculation_func, task_list)
在core数量=12的情况下需要大约2.2秒的执行时间,而在core数量=4的情况下我达到的最佳时间是1.6秒。两种方法都比不使用多处理调用函数慢。你知道吗
我已经试过了:
在这两种情况下,我都添加了一个时间。时间()在计算开始和结束时,打印所有计算的一个或1/12所需的时间。测得的时间和开始时预期的一样小。你知道吗
问题:
目前没有回答
相关问题 更多 >
编程相关推荐