2014-07-19 25 views
-4

我在Python字典中有一些巨大的数据, 说,它包含公司A和公司B的销售数据。 对这两家公司进行销售分析需要很长时间。如何在python中使用多处理进行更快的计算?

有没有办法将字典分成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个核心分配这个工作,整个计算将在更短的时间内完成。

回答

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这是不行的。

另外请注意:

  • 虽然这一般是很多人的结构“多处理尴尬的并行”问题,这不会解决你刚才分裂的数据(必要*)的任何问题。
  • 如果您的数据很大,则会在父进程和子进程之间发生大量的序列化
  • 如果您的数据比适合内存的内容大,那么您将遇到不同的问题;其中一个将涉及不同的算法来处理数据。
+0

先生,当我运行您提供的代码时,我的CPU将被烧毁,并且必须重新启动PC。 – alwbtc

相关问题