2012-07-07 66 views
0

所以我有一个脚本,它可以读取700,000行左右的文件。对于每一行,它都会返回它从该行计算出的值列表。在我尝试使用多处理之前,我使用了for循环,并将每行的值递增到一个全局变量(因为最后我总结了一个)。不幸的是,对于多处理模块,我不能仅仅将全局变量添加到全局变量中,因为它们是独立的进程。相反,我让每个进程都返回我之后的值,并使用Pool.map创建返回值的巨大列表。然后,我可以遍历这个列表并获得我以后的款项。这是非常紧张的记忆。有什么建议么?我意识到这可能很难阅读,所以,如果需要,我可以澄清。谢谢!多重处理和内存问题

+0

是的,请澄清。听起来像你可以计算每个过程中的值的总和,然后在最后一个值。 但是再一次,我对确切知道的具体问题还不够了解。 你想要的或多或少是一个简单的[MapReduce]应用程序(http://en.wikipedia.org/wiki/MapReduce) – oxc 2012-07-07 20:33:41

+0

不,我要返回的是一个列表,所以我想要总结每个进程列表中的第i个元素。 – user1423020 2012-07-08 00:43:45

+0

鉴于我们中的两个人不能完全理解你想要的东西,我认为在你的问题中增加一些代码将有助于提高你得到有用答案的机会。 – 2012-07-08 07:07:52

回答

0

在每个过程中保留一个累加器,然后在最后加起来所有这些累加器。您只需要为每个进程存储一个值。

+0

嗯,我正在从每个进程取多个值,然后汇总来自不同进程的值。那么,如果我需要一个以上的变量,我怎么会只从每个进程返回一个值呢? – user1423020 2012-07-08 00:42:58