RuntimeError: Блокировка объектов должна быть общей только для процессов через наследование - PullRequest
0 голосов
/ 25 апреля 2019

Я получаю ValueError: Lock objects should only be shared between processes through inheritance при написании xarray.DataArray to_netcdf (). Все работает до записи на диск. Но я нашел обходной путь, который должен использовать dask.config.set(scheduler='single-threaded').

  • Каждый должен использовать dask.config.set(scheduler='single-threaded') перед записью на диск?

  • Я что-то упустил?

Я проверил два планировщика:

1) from dask.distributed import Client; client = Client()

2) import dask.multiprocessing; dask.config.set(scheduler=dask.multiprocessing.get)

python = 2,7, xarray = 0,10,9, трассировка:


  File "/home/py_user/miniconda2/envs/v0/lib/python2.7/site-packages/xarray/core/dataarray.py", line 1746, in to_netcdf
    return dataset.to_netcdf(*args, **kwargs)
  File "/home/py_user/miniconda2/envs/v0/lib/python2.7/site-packages/xarray/core/dataset.py", line 1254, in to_netcdf
    compute=compute)
  File "/home/py_user/miniconda2/envs/v0/lib/python2.7/site-packages/xarray/backends/api.py", line 724, in to_netcdf
    unlimited_dims=unlimited_dims, compute=compute)
  File "/home/py_user/miniconda2/envs/v0/lib/python2.7/site-packages/xarray/core/dataset.py", line 1181, in dump_to_store
    store.sync(compute=compute)
...
  File "/home/py_user/miniconda2/envs/v0/lib/python2.7/multiprocessing/synchronize.py", line 95, in __getstate__
    assert_spawning(self)
  File "/home/py_user/miniconda2/envs/v0/lib/python2.7/multiprocessing/forking.py", line 52, in assert_spawning
    ' through inheritance' % type(self).__name__

1 Ответ

0 голосов
/ 27 апреля 2019

Как упомянул @jhamman в комментариях.Возможно, это было исправлено в более новой версии Xarray.

...