iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 27
0
Google Developers Machine Learning

又LAG的ML學習筆記系列 第 27

jupyter notebook中multiprocessing無法執行?未解,純嘗試經驗分享

一切都要從,幫忙一位朋友進行資料前處理開始說起。要處理的資料數量超過2000萬筆,以目前電腦處理速度來說,算不上「大數據」,不過對於一台記憶體只有32G、CPU應該是4-6核心的電腦來說,夠了。尤其欄為數量來說,恐怕超過千個。這讓即使使用了NumPy,像下面這樣要去過濾資料也夠了....

for d in df:
    result = d[d>0]

df[df>0]會GG...直接榨給你看/images/emoticon/emoticon04.gif。所以對於一個二維矩陣,只能一筆資料一筆資料處理...可是光是處理一筆資料就需要花上12、13秒,這...要花上幾年時間...。好,來等吧!怎麼可能!!/images/emoticon/emoticon05.gif

在看看CPU使用率...14%?大可同時跑六七個執行去。看點範例先來試試看:

"""# 引入`multiprocessing`"""
from multiprocessing import Pool, cpu_count

"""# 定義要多次執行的函式"""
def f(x):
    return x*x

"""## 多執行緒實行"""
with Pool(cpu_count()) as p:
    print(p.map(f, [1, 2, 3]))

"""# 後續工作"""
print("Hello")

完美,按下執行.../images/emoticon/emoticon16.gif死了??

上述的執行環境

  • OS: Windows 10 64bits
  • Anaconda Version: 1.9.7
  • IPython Version: 7.8.0
  • Python Version: 3.7

我嘗試在命令提示字元(CMD)去執行Python,然後運行同樣的程式碼...同樣會GG。

不死心,用Colab在試一次

Tensorflow會運行多執行緒,甚至可以在多台機體上,協調工作。Jupyter Notebook也是最為流行的工具之一,在Colab上也會發生同樣的事?怎麼可能!

https://ithelp.ithome.com.tw/upload/images/20191013/20112470PfABxQ581b.png

/images/emoticon/emoticon42.gif沒問題阿?!

用自己的Anaconda Jupyter Notebook試試

可能Google有把Colab做過優化...沒設定就會出錯,來拿自己的環境下去試試:

環境

  • OS: LinuxMint 19.2
  • Anaconda Version: 1.9.7
  • IPython Version: 7.4.0
  • Python Version: 3.7.3

也沒問題阿!/images/emoticon/emoticon08.gif

可...這問題好像不算太少發生ㄟ?

看最後一個,有可能是作業系統的問題,但沒辦法排除與IPython版本有關。Windows似乎有其他方式解決,但也許未來Jupyter Notebook在Windows上也會有更好的支援。

對了,上面的筆記本,可以在這裡找到。


上一篇
開放資料集
下一篇
康威生命遊戲
系列文
又LAG的ML學習筆記32

尚未有邦友留言

立即登入留言