2017-02-25 137 views
1

我注意到,與兩個工人分佈式運行只使用一個核心每個工人。任務花費了更長的時間,然後預計完成

下面的腳本作爲一個例子需要大約20秒來獲得times2和5秒得到times

這意味着每個工作人員使用單個內核執行4個任務,而不是並行使用全部4個內核。我還確認,每個工作人員只有一個核心使用資源監視器。

爲什麼僅爲工作人員使用一個內核而不是並行執行任務?

回答

1

因爲你的函數是純Python,它可能被GIL綁定。我建議改變你的工人,讓他們使用多個進程而不是多個線程。例如,如果在其上運行DASK-工作進程的機器有四個核心,那麼你可以按照以下方式啓動DASK-工作進程:

dask-worker scheduler-address:8786 --nprocs 4 --nthreads 1 
+0

要進行確認,如果在4核心,8線程CPU執行,啓動命令是:'dask-worker scheduler-address:8786 --nprocs 4 --nthreads 8'? – Greg

+0

我們通常每個核心啓動一個線程。 ' - 線程'應該重命名爲' - 每線程線程' – MRocklin

+0

這是否意味着 - 內存限制設置也是每個內核? – Greg