У меня есть функция interpolate_to_particles
, написанная на c и обернутая ctypes
. Я хочу использовать dask.delayed
для выполнения серии вызовов этой функции.
Код успешно работает без dask
# Interpolate w/o dask
result = interpolate_to_particles(arg1, arg2, arg3)
и с распределенным расписанием в режиме single-threaded
# Interpolate w/ dask
from dask.distributed import Client
client = Client()
result = dask.delayed(interpolate_to_particles)(arg1, arg2, arg3)
result_c = result.compute(scheduler='single-threaded')
но если я вместо этого позвоню
result_c = result.compute()
Я получаю следующее KeyError:
> Traceback (most recent call last): File
> "/path/to/lib/python3.6/site-packages/distributed/worker.py",
> line 3287, in dumps_function
> result = cache_dumps[func] File "/path/to/lib/python3.6/site-packages/distributed/utils.py",
> line 1518, in __getitem__
> value = super().__getitem__(key) File "/path/to/lib/python3.6/collections/__init__.py",
> line 991, in __getitem__
> raise KeyError(key) KeyError: <function interpolate_to_particles at 0x1228ce510>
Журналы рабочих процессов, доступ к которым осуществляется с панели инструментов dask, не предоставляют никакой информации. Собственно, я не вижу информации, чтобы рабочие что-то сделали, кроме запуска.
Любые идеи о том, что может происходить, или предлагаемые инструменты, которые я могу использовать для дальнейшей отладки? Спасибо!
result = dask.delayed(interpolate_to_particles)(...)
, за которым следуетresult_c = result.compute()
, работает по назначению. - person elltrain   schedule 07.04.2020