1
我注意到,與兩個工人分佈式運行只使用一個核心每個工人。任務花費了更長的時間,然後預計完成
下面的腳本作爲一個例子需要大約20秒來獲得times2
和5秒得到times
。
這意味着每個工作人員使用單個內核執行4個任務,而不是並行使用全部4個內核。我還確認,每個工作人員只有一個核心使用資源監視器。
爲什麼僅爲工作人員使用一個內核而不是並行執行任務?
我注意到,與兩個工人分佈式運行只使用一個核心每個工人。任務花費了更長的時間,然後預計完成
下面的腳本作爲一個例子需要大約20秒來獲得times2
和5秒得到times
。
這意味着每個工作人員使用單個內核執行4個任務,而不是並行使用全部4個內核。我還確認,每個工作人員只有一個核心使用資源監視器。
爲什麼僅爲工作人員使用一個內核而不是並行執行任務?
因爲你的函數是純Python,它可能被GIL綁定。我建議改變你的工人,讓他們使用多個進程而不是多個線程。例如,如果在其上運行DASK-工作進程的機器有四個核心,那麼你可以按照以下方式啓動DASK-工作進程:
dask-worker scheduler-address:8786 --nprocs 4 --nthreads 1
要進行確認,如果在4核心,8線程CPU執行,啓動命令是:'dask-worker scheduler-address:8786 --nprocs 4 --nthreads 8'? – Greg
我們通常每個核心啓動一個線程。 ' - 線程'應該重命名爲' - 每線程線程' – MRocklin
這是否意味着 - 內存限制設置也是每個內核? – Greg