我使用distributed.Client
做一些局部計算。我也想從主線程產生一個gevent greenlet來做一些無關的監測。使用gevent的patch_all()
方法,將把本地線程轉化爲greenlet。鑑於調度程序完成的大部分工作是熊貓/ numpy,因此我懷疑大部分工作會釋放GIL,本地線程將會很有用。我擔心,讓他們通過gevent補丁將是完全次優的。然而,不修補本地線程給我帶來了其他麻煩(特別是當本地調度程序嘗試分叉Bokeh服務器時拋出錯誤,這是一個已知的限制)。在使用gevent和dask/distributed時是否有建議的最佳做法,還是應該避免?DASK的區域調度和GEVENT
1
A
回答
1
Dask.distributed採用旋風式併發,而在計算其他線程發生。計算和通信在相同的過程中重疊。如果您停止使用正確的線程,則通信將阻塞,直到長時間運行的計算完成。這可能會導致您的工作人員變得無法響應,因爲他們必須等待長時間運行的計算,然後才能處理與其他工作人員的通信請求。 numpy/pandas計算釋放GIL的事實只有在你真的使用線程時纔有用。
如果分叉關閉的背景虛化服務器是您還可以選擇只不與--no-bokeh
標誌使用背景虛化的網絡服務器的問題。
dask-scheduler --no-bokeh
或者,總之,dask.distributed不與GEVENT測試,並沒有計劃來支持它。
相關問題
- 1. Dask DataFrame Groupby分區
- 2. dask核心外矩陣乘法調度
- 3. gevent和多進程的區別
- 4. 角度區域
- 5. Dask和fbprophet
- 6. Rails時區和cron調度
- 7. 不同亮度的區域
- 8. 視窗區域和透明度
- 9. Dask讀取CSV,將分區設置爲CSV長度
- 10. gevent + concurrent.futures和SQLAlchemy
- 11. ZeroMQ,Redis和Gevent
- 12. SleekXMPP和Gevent
- 13. redis-py和gevent
- 14. Scapy和Gevent?
- 15. gevent和socksipy
- 16. 跨區域調用
- 17. 獲取ImageView的繪製區域的高度和寬度
- 18. AWS Lambda和SNS:調用Lambda跨區域
- 19. FreeBSD調度程序和Linux調度程序的區別
- 20. 從webservice獲取區域的經度和緯度
- 21. 計算公制區域內的所有緯度和經度
- 22. 如何獲取遮罩區域的寬度和高度
- 23. 如何增加繪圖區域圖的寬度和高度
- 24. 對於android中的區域座標(經度和緯度)
- 25. 高效地創建高密度區域的密度圖,稀疏區域的點
- 26. Rails i18n區域設置和區域
- 27. 如何使用gevent創建一個簡單的調度程序?
- 28. 全屏寬度div區域
- 29. 點擊區域敏感度
- 30. iOS5區域監控精度
權,這就是爲什麼我想用並行線程,而不是greenlets是。鑑於CPU綁定進程的阻塞性質,以及子進程會繼承greenlet的副本,我決定拋棄整個方法。我想不出一種明智的方式來同時使用dask和gevent。 –