我使用python 2.7.10。 我讀了很多文件,將它們存儲到一個大列表中,然後嘗試調用多處理並將大列表傳遞給這些多進程,以便每個進程都可以訪問這個大列表並進行一些計算。python多處理,大數據轉化爲睡眠過程
我使用游泳池這樣的:
def read_match_wrapper(args):
args2 = args[0] + (args[1],)
read_match(*args2)
pool = multiprocessing.Pool(processes=10)
result=pool.map(read_match_wrapper,itertools.izip(itertools.repeat((ped_list,chr_map,combined_id_to_id,chr)),range(10)))
pool.close()
pool.join()
基本上,我傳遞多個變量 'read_match' 功能。爲了使用pool.map,我寫了'read_match_wrapper'函數。我不需要這些流程的任何結果。我只是想讓他們跑步並完成。
當我的數據列表'ped_list'很小時,我可以完成整個過程。當我加載所有的數據,如10G,那麼它產生的所有多進程顯示'S',似乎根本不工作..
我不知道是否有限制你可以訪問多少數據通過池? 我真的需要幫助!謝謝!
'read_match'的代碼是什麼? –
你可以檢查'itertools.izip()'節是否返回正確的值?如果你的數據真的是10G,用'repeat()',它可能會變得更糟,並可能消耗太多的內存。 – Jkm
是的,我認爲記憶是這裏的問題。每次產生一個進程時,內存都會被複制。而集羣無法負擔得起! – odeya