Dask распространяется с MS VS2017 - PullRequest
1 голос
/ 03 июня 2019

Я использую Microsoft Visual Studio в качестве среды IDE для Python и недавно начал использовать Dask для обработки большого файла CSV.При попытке использовать распределенный Dask я получаю множество ошибок, если пытаюсь запустить панель мониторинга.

Я пробовал простой код в MS VS2017 и ноутбуке Jupyter на нескольких машинах.Я не получаю ошибки в Jupyter, и приборная панель загружается должным образом.Однако в Visual Studio происходит сбой кода и не выполняется загрузка панели мониторинга.

Обе IDE работают в одной среде. Я использую последнюю версию Dask и Python 3.6

Пример некоторого простого кода:

from dask import dataframe as ddf
from dask import multiprocessing 
from dask.distributed import Client
client = Client()

Приведенный выше код запускает панель мониторинга dask на локальном хосте при запуске под Jupyter.Однако он производит массу ошибок с VS2017.Ниже приведены некоторые ошибки

distributed.nanny - WARNING - Worker process 13692 exited with status 1
The thread 0x8 has exited with code 0 (0x0).

The thread 0x4 has exited with code 0 (0x0).
The thread 0x9 has exited with code 0 (0x0).
The thread 0xb has exited with code 0 (0x0).
The thread 0xa has exited with code 0 (0x0).
distributed.nanny - WARNING - Worker process 15368 exited with status 1

The thread 0x5 has exited with code 0 (0x0).
distributed.nanny - WARNING - Worker process 16616 exited with status 1

The thread 0x6 has exited with code 0 (0x0).
distributed.nanny - WARNING - Worker process 22288 exited with status 1

The thread 0x7 has exited with code 0 (0x0).
distributed.nanny - WARNING - Restarting worker

Traceback (most recent call last):
  File "C:\Users\C\Anaconda3\envs\envTensorflow\lib\multiprocessing\queues.py", line 236, in _feed
    send_bytes(obj)
  File "C:\Users\C\Anaconda3\envs\envTensorflow\lib\multiprocessing\connection.py", line 200, in send_bytes
    self._send_bytes(m[offset:offset + size])
  File "C:\Users\C\Anaconda3\envs\envTensorflow\lib\multiprocessing\connection.py", line 280, in _send_bytes
    ov, err = _winapi.WriteFile(self._handle, buf, overlapped=True)
BrokenPipeError: [WinError 232] The pipe is being closed
The thread 0x10 has exited with code 0 (0x0).
tornado.application - ERROR - Multiple exceptions in yield list
Traceback (most recent call last):
  File "C:\Users\C\Anaconda3\envs\envTensorflow\lib\site-packages\tornado\gen.py", line 883, in callback
    result_list.append(f.result())
  File "C:\Users\C\Anaconda3\envs\envTensorflow\lib\site-packages\tornado\gen.py", line 1147, in run
    yielded = self.gen.send(value)
  File "C:\Users\C\Anaconda3\envs\envTensorflow\lib\site-packages\distributed\deploy\local.py", line 316, in _start_worker
    raise gen.TimeoutError("Worker failed to start")
tornado.util.TimeoutError: Worker failed to start

tornado.application - ERROR - Multiple exceptions in yield list
Traceback (most recent call last):
  File "C:\Users\C\Anaconda3\envs\envTensorflow\lib\site-packages\tornado\gen.py", line 883, in callback
    result_list.append(f.result())
  File "C:\Users\C\Anaconda3\envs\envTensorflow\lib\site-packages\tornado\gen.py", line 1147, in run
    yielded = self.gen.send(value)
  File "C:\Users\C\Anaconda3\envs\envTensorflow\lib\site-packages\distributed\deploy\local.py", line 316, in _start_worker
    raise gen.TimeoutError("Worker failed to start")
tornado.util.TimeoutError: Worker failed to start

tornado.application - ERROR - Multiple exceptions in yield list
Traceback (most recent call last):
  File "C:\Users\C\Anaconda3\envs\envTensorflow\lib\site-packages\tornado\gen.py", line 883, in callback
    result_list.append(f.result())
  File "C:\Users\C\Anaconda3\envs\envTensorflow\lib\site-packages\tornado\gen.py", line 1147, in run
    yielded = self.gen.send(value)
  File "C:\Users\C\Anaconda3\envs\envTensorflow\lib\site-packages\distributed\deploy\local.py", line 316, in _start_worker
    raise gen.TimeoutError("Worker failed to start")
tornado.util.TimeoutError: Worker failed to start

distributed.nanny - ERROR - Failed to restart worker after its process exited
Traceback (most recent call last):
  File "C:\Users\C\Anaconda3\envs\envTensorflow\lib\site-packages\distributed\nanny.py", line 343, in _on_exit
    yield self.instantiate()
  File "C:\Users\C\Anaconda3\envs\envTensorflow\lib\site-packages\tornado\gen.py", line 1133, in run
    value = future.result()
  File "C:\Users\C\Anaconda3\envs\envTensorflow\lib\site-packages\tornado\gen.py", line 1141, in run
    yielded = self.gen.throw(*exc_info)
  File "C:\Users\C\Anaconda3\envs\envTensorflow\lib\site-packages\distributed\nanny.py", line 276, in instantiate
    timedelta(seconds=self.death_timeout), self.process.start()
  File "C:\Users\C\Anaconda3\envs\envTensorflow\lib\site-packages\tornado\gen.py", line 1133, in run
    value = future.result()
  File "C:\Users\C\Anaconda3\envs\envTensorflow\lib\site-packages\tornado\gen.py", line 1141, in run
    yielded = self.gen.throw(*exc_info)
  Fil...

Worker failed to start
Stack trace:
 >  File "C:\Users\C\Anaconda3\envs\envTensorflow\Lib\site- 
 packages\distributed\deploy\local.py", line 316, in _start_worker
 >    raise gen.TimeoutError("Worker failed to start")

1 Ответ

0 голосов
/ 04 июня 2019

Судя по ошибкам, Visual Studio не любит запускать интерактивный код, который использует многопроцессорность так же, как Dask использует многопроцессорность.

Самое простое решение - запустить клиент без процессов

client = Client(processes=False)

Хотя это имеет некоторые последствия для производительности, особенно при работе с нечисловыми данными.

...