html_url,issue_url,id,node_id,user,created_at,updated_at,author_association,body,reactions,performed_via_github_app,issue https://github.com/pydata/xarray/issues/1889#issuecomment-687271215,https://api.github.com/repos/pydata/xarray/issues/1889,687271215,MDEyOklzc3VlQ29tbWVudDY4NzI3MTIxNQ==,2448579,2020-09-04T17:02:03Z,2020-09-04T17:02:03Z,MEMBER,"Another way to do this would be to use ` da.map_blocks(plotfunc, template=...)` with ``` python def plotfunc(da): f = plt.figure() ... f.close() return da.time # or similar ``` I have used this successfully with a distributed cluster.","{""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,294735496 https://github.com/pydata/xarray/issues/1889#issuecomment-368384904,https://api.github.com/repos/pydata/xarray/issues/1889,368384904,MDEyOklzc3VlQ29tbWVudDM2ODM4NDkwNA==,2443309,2018-02-26T04:09:14Z,2018-02-26T04:09:14Z,MEMBER,"Closing for now. @apatlpo, feel free to reopen if there's more to discuss here. ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,294735496 https://github.com/pydata/xarray/issues/1889#issuecomment-364518238,https://api.github.com/repos/pydata/xarray/issues/1889,364518238,MDEyOklzc3VlQ29tbWVudDM2NDUxODIzOA==,1217238,2018-02-09T18:31:28Z,2018-02-09T18:31:28Z,MEMBER,"@apatlpo sure, something like: ```python import threading import matplotlib.pyplot MPL_LOCK = threading.Lock() def save_imshow(data, path): with MPL_LOCK: fig, ax = plt.subplot() ax.imshow(data) fig.savefig(path) ``` `save_imshow()` is now something you safely call in parallel (e.g., from `dask.array.map_blocks()`).","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,294735496 https://github.com/pydata/xarray/issues/1889#issuecomment-363601313,https://api.github.com/repos/pydata/xarray/issues/1889,363601313,MDEyOklzc3VlQ29tbWVudDM2MzYwMTMxMw==,1217238,2018-02-06T23:26:49Z,2018-02-06T23:26:55Z,MEMBER,"I agree that it is certainly a best practice to avoid relying on global state from the pyplot module. That said, my experience has been that even if you avoid using pyplot functions matplotlib is still not thread-safe ([StackOverflow](https://stackoverflow.com/questions/34764535/why-cant-matplotlib-plot-in-a-different-thread) backs me up here). So you probably will need a thread-lock around your use of any plotting functions, anyways.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,294735496 https://github.com/pydata/xarray/issues/1889#issuecomment-363431406,https://api.github.com/repos/pydata/xarray/issues/1889,363431406,MDEyOklzc3VlQ29tbWVudDM2MzQzMTQwNg==,10050469,2018-02-06T14:04:28Z,2018-02-06T14:04:28Z,MEMBER,"You are lucky, we just added a contributing guide to xarray: http://xarray.pydata.org/en/latest/contributing.html ;-) The recommended way to install xarray (and any other local library btw) is: ``` pip install -e . ```","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,294735496 https://github.com/pydata/xarray/issues/1889#issuecomment-363416365,https://api.github.com/repos/pydata/xarray/issues/1889,363416365,MDEyOklzc3VlQ29tbWVudDM2MzQxNjM2NQ==,10050469,2018-02-06T13:06:12Z,2018-02-06T13:06:12Z,MEMBER,Thanks for the report! Would you like to open a PR? I think you are the best placed to see if you proposed fixes solve the problem for you ,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,294735496