2012-07-07 72 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