如何使用多处理在python中更快地进行计算?

时间:2014-07-19 09:07:17

标签: python multiprocessing

我在python词典中有一些大数据, 比如,它包含公司A和公司B的销售数据。 这两家公司的销售分析需要很长时间。

有没有办法将字典分成2(公司A和B),并在2个CPU内核上进行计算,这样它会更快? A公司和B公司的销售分析是相互独立的。

让我们说我的字典是这样的:

sales_data = {"COMPANY A":[1,2,3.....100],"COMPANY B":[1,2,3.....200]}

然后我想总结上面2个内部列表中的数字,这将给出每个公司的总销售额。 1个CPU核心将汇总company A的销售数量, 其他CPU核心将汇总company B的销售数字。

如果只有1个CPU完成此工作,它将首先汇总company A的销售数字,然后将company B的销售数字相加。但如果2个核心分配这个工作,整个计算将在更短的时间内完成。

1 个答案:

答案 0 :(得分:0)

from multiprocessing import Pool


def job(xs):
    return sum(xs)


sales_data = {"COMPANY A":[1,2,3.....100],"COMPANY B":[1,2,3.....200]}

p = Pool()
p.map(job, sales_date.values())

NB:这不适用于您的"示例"数据不是Python。

请注意:

  • 虽然这通常是许多"多处理的结构令人尴尬地平行"问题,这不会解决你刚刚分割数据的问题(必然是*)。
  • 如果您的数据很大,则父进程和子进程之间会发生大量序列化
  • 如果您的数据大于适合内存的数据,那么您会遇到其他问题;其中一个涉及处理数据的不同算法。