第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

多處理中的共享內(nèi)存對(duì)象

多處理中的共享內(nèi)存對(duì)象

多處理中的共享內(nèi)存對(duì)象假設(shè)我有一個(gè)大內(nèi)存numpy數(shù)組,我有一個(gè)函數(shù)func,它接受這個(gè)巨大的數(shù)組作為輸入(連同一些其他參數(shù))。func具有不同參數(shù)可以并行運(yùn)行。例如:def func(arr, param):     # do stuff to arr, param# build array arrpool = Pool(processes = 6)results = [pool.apply_async(func, [arr, param]) for param in all_params]output = [res.get() for res in results]如果我使用多處理庫(kù),那么這個(gè)巨型數(shù)組將被多次復(fù)制到不同的進(jìn)程中。有沒(méi)有辦法讓不同的進(jìn)程共享同一個(gè)數(shù)組?此數(shù)組對(duì)象是只讀的,永遠(yuǎn)不會(huì)被修改。更復(fù)雜的是,如果arr不是一個(gè)數(shù)組,而是一個(gè)任意的python對(duì)象,有沒(méi)有辦法分享它?[EDITED]我讀了答案,但我仍然有點(diǎn)困惑。由于fork()是copy-on-write,因此在python多處理庫(kù)中生成新進(jìn)程時(shí)不應(yīng)調(diào)用任何額外的成本。但是下面的代碼表明存在巨大的開(kāi)銷:from multiprocessing import Pool, Managerimport numpy as np; import timedef f(arr):     return len(arr)t = time.time()arr = np.arange(10000000)print "construct array = ", time.time() - t;pool = Pool(processes = 6)t = time.time()res = pool.apply_async(f, [arr,])res.get()print "multiprocessing overhead = ", time.time() - t;輸出(順便說(shuō)一下,隨著數(shù)組大小的增加,成本也會(huì)增加,所以我懷疑仍有與內(nèi)存復(fù)制相關(guān)的開(kāi)銷):construct array =  0.0178790092468 multiprocessing overhead =  0.252444982529如果我們不復(fù)制數(shù)組,為什么會(huì)有這么大的開(kāi)銷?共享內(nèi)存拯救了我的哪一部分?
查看完整描述

3 回答

  • 3 回答
  • 0 關(guān)注
  • 577 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)