joblib并行的小總結(jié)貌踏,看完基本上怎么優(yōu)化就清楚了。

joblib 并行文檔研究

https://joblib.readthedocs.io/en/latest/parallel.html#bad-interaction-of-multiprocessing-and-third-party-libraries

在我庸常的如草木一般成住壞空的生命中窟勃,如果我要做并行計算祖乳,大規(guī)模計算(TB級別)我會直接開pyspark,

matlab里直接parfor,python是multiprocessing,R是parallel,SAS是在sas proc之前加options.這些東西都很好,但是都有缺點秉氧。

pyspark的并行要用他們自己的pipeline里的模型眷昆,如果要用小模型,比如sklearn,imblearn汁咏,需要涉及到j(luò)ava內(nèi)存到python內(nèi)存的序列化反序列化開銷亚斋,

雖然經(jīng)過apache arrow優(yōu)化后結(jié)果可以接受。multiprocessing數(shù)據(jù)處理能放不能收攘滩,數(shù)據(jù)可以出去算帅刊,但是收不到一起,算完的東西

在聚合的時候會出問題漂问。SAS和matlab有軟件使用域限制赖瞒。

但是最近用到了joblib,可能更適用于簡單的把所要用的模型并行化。

使用的時候簡單照如下句子就可以了

from joblib import Parallel,delayed

from past.builtins import execfile

import os

import copy

cpu_count=os.cpu_count()+1

def self_function(x)

return xxxx

def self_function_2(self_function,x)

return self_function(x)

def self_function_3(self_function,x,y,z):

return self_function(x)+y+z

parallel=Parallel(n_jobs=max(cpu_count-1,1),prefer="threads",require='sharedmem')

#遇到并行化的程序是簡單程序级解,程序里不涉及復(fù)用其他函數(shù)等的情況冒黑,直接寫參數(shù)可以

out=parallel(delayed(self_function)(i) for i in range(1,11))

#遇到并行化的程序是復(fù)雜程序,程序里涉及復(fù)用其他函數(shù)勤哗,并行的同時會導致各子程序讀到的數(shù)據(jù)是上一個進程生產(chǎn)出來的抡爹,

#導致數(shù)據(jù)對不齊,這時候芒划,就需要用一些寫法

out=parallel(delayed(optimize_2ndStg)(copy.deepcopy(self_function),

? ? ? ? ? ? i for i in range(11))

#如果有多個參數(shù)冬竟,把參數(shù)打包zip

ruleParam=zip(rule['k'].tolist(),rule['stk_num'].tolist(),rule['bond_num'].tolist())

out=parallel(delayed(self_function_3)(copy.deepcopy(),

? ? ? ? ? ? k=i,j=num_j,l=num_l) for i,num_j,num_l in ruleParam)

#

joblib使用設(shè)定與須知欧穴,從網(wǎng)頁里來

Thread-based parallelism vs process-based parallelism?

joblib parallel默認使用loky backend,因為是用來區(qū)分開不同CPU的,

但是實際上這會導致會話&初始化開銷泵殴,如果你要并行的程序很小涮帘,或者

并行的程序之間公用內(nèi)存,需要互相通信笑诅,那么就很麻煩调缨。

可以使用prefer="threads"

Serialization & Processes?

如果并行的文件很大,使用cloudpickle進行序列化吆你,一般pickle就可以了弦叶。

Shared-memory semantics?

如果涉及到數(shù)據(jù)分別算,最后還要收到一起妇多,共享內(nèi)存伤哺,那么要寫 require='sharedmem'

Reusing a pool of workers?

有些算法會數(shù)次連續(xù)用到一個原函數(shù)的不同階段的函數(shù),這時候直接calling joblib.parallel并不是

最優(yōu)選擇者祖,這個時候用joblib.Parallel類里的context manager API去換個寫法更好立莉。

Working with numerical data in shared memory (memmapping)?

默認joblib是用multiprocessing開多核的,但是如果數(shù)據(jù)量比較大七问,多核一跑內(nèi)存受不了蜓耻,

這個時候joblib.Parallel類會提供解決方案,它會用索引械巡,用另一種文件系統(tǒng)媒熊,

Automated array to memmap conversion?

計算中間結(jié)果儲存空間,默認占用C盤可能受不了坟比,在這里看看芦鳍。

Manual management of memmapped input data?

將不用的內(nèi)存dump到一個地方

Writing parallel computation results in shared memory?

如果數(shù)據(jù)是w+,r+模式打開的,那么核心會得到r+權(quán)限葛账,這時候可以直接把結(jié)果寫到元數(shù)據(jù)里

減輕讀寫的消耗柠衅。

Avoiding over-subscription of CPU resources?

一些設(shè)置,做進程線程管理籍琳,比如電腦4個核菲宴,要控制每個核線程的數(shù)量。有時候這些設(shè)置會被其他用的方法改寫趋急,有時候又需要自己改寫喝峦。

再下面就是其他設(shè)置。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末呜达,一起剝皮案震驚了整個濱河市谣蠢,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖眉踱,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件挤忙,死亡現(xiàn)場離奇詭異,居然都是意外死亡谈喳,警方通過查閱死者的電腦和手機册烈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來婿禽,“玉大人赏僧,你說我怎么就攤上這事∨で悖” “怎么了次哈?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長吆录。 經(jīng)常有香客問我,道長琼牧,這世上最難降的妖魔是什么恢筝? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮巨坊,結(jié)果婚禮上撬槽,老公的妹妹穿的比我還像新娘。我一直安慰自己趾撵,他們只是感情好侄柔,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著占调,像睡著了一般暂题。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上究珊,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天薪者,我揣著相機與錄音,去河邊找鬼剿涮。 笑死言津,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的取试。 我是一名探鬼主播悬槽,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼瞬浓!你這毒婦竟也來了初婆?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎烟逊,沒想到半個月后渣窜,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡宪躯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年乔宿,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片访雪。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡详瑞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出臣缀,到底是詐尸還是另有隱情坝橡,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布精置,位于F島的核電站计寇,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏脂倦。R本人自食惡果不足惜番宁,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望赖阻。 院中可真熱鬧蝶押,春花似錦、人聲如沸火欧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽苇侵。三九已至赶盔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間榆浓,已是汗流浹背招刨。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留哀军,地道東北人沉眶。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像杉适,于是被迫代替她去往敵國和親谎倔。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容