首页 > 解决方案 > Modin 与 dask 冲突

问题描述

我正在尝试 modin,但不断收到错误消息:

import modin.pandas as md
import pandas as pd

PATH = 'file.csv'

%%time
df = pd.read_csv(PATH)

%%time
mdf = md.read_csv(PATH)

错误:

UserWarning:Dask 执行环境尚未初始化。Initializing... 要删除此警告,请在执行数据帧操作之前运行以下 python 代码:

from distributed import Client

client = Client()

任务异常永远不会被检索到:<Task finished name='Task-8' coro=<_wrap_awaitable() done,定义在 C:\Users\Oleg\AppData\Local\Programs\Python\Python39\lib\asyncio\tasks。 py:683> exception=ImportError("cannot import name 'Popen' from partial initialized module 'multiprocessing.popen_spawn_win32' (很可能是由于循环导入) (C:\Users\Oleg\AppData\Local\Programs\Python\Python39 \lib\multiprocessing\popen_spawn_win32.py)")> Traceback(最近一次调用最后):文件“C:\Users\Oleg\AppData\Local\Programs\Python\Python39\lib\asyncio\tasks.py”,第 690 行, 在_wrap_awaitable中返回(从 awaitable.await 中产生)()) 文件“C:\Users\Oleg\AppData\Local\Programs\Python\Python39\lib\site-packages\distributed\core.py”,第 290 行,在_await self.start() 文件“C: \Users\Oleg\AppData\Local\Programs\Python\Python39\lib\site-packages\distributed\nanny.py”,第 295 行,开始响应 = await self.instantiate() 文件“C:\Users\Oleg\ AppData\Local\Programs\Python\Python39\lib\site-packages\distributed\nanny.py”,第 378 行,在实例化结果中 = await self.process.start() 文件“C:\Users\Oleg\AppData\Local \Programs\Python\Python39\lib\site-packages\distributed\nanny.py”,第 575 行,在开始等待 self.process.start() 文件“C:\Users\Oleg\AppData\Local\Programs\Python\ Python39\lib\site-packages\distributed\process.py”,第 34 行,在 _call_and_set_future res = func(*args, **kwargs) 文件“C:\Users\Oleg\AppData\Local\Programs\Python\Python39\lib\site-packages\distributed\process.py”,第 202 行,在 _start process.start() 文件“C:\Users\Oleg\AppData\Local \Programs\Python\Python39\lib\multiprocessing\process.py",第 121 行,在 start self._popen = self._Popen(self) File "C:\Users\Oleg\AppData\Local\Programs\Python\Python39\ lib\multiprocessing\context.py”,第 224 行,在 _Popen 返回 _default_context.get_context().Process._Popen(process_obj) 文件“C:\Users\Oleg\AppData\Local\Programs\Python\Python39\lib\multiprocessing\ context.py”,第 326 行,在 _Popen from .popen_spawn_win32 import Popen ImportError: cannot import name 'Popen' from partial initialized module 'multiprocessing.popen_spawn_win32'(很可能是由于循环导入)(C:\Users\Oleg\AppData\Local\Programs\Python\Python39\lib\multiprocessing\popen_spawn_win32.py) '''

如果有帮助的话,我有一个 0.1.20 版本。SO上有人建议尝试错误消息中的内容-导入dask.distributed并启动客户端,但没有帮助。

任何帮助深表感谢。

附言。几周前我想尝试 modin,但安装并不简单,有很多错误,主要是 ray 和 dask 导入。我设法让 dask 以某种方式工作,而不是 modin。并开始学习它的api。现在我决定再试一次,因为我认为 dask 工作正常,但是不,仍然有一些导入错误,什么都没有。

标签: pandasdaskmodin

解决方案


似乎 modin 正在自动创建一个 dask 本地进程集群。不幸的是,它们中的每一个都在导入您的脚本,以便他们可以理解定义的变量——并且每个都试图然后启动一个新的 dask 本地集群。

您应该尝试将代码放入函数中,并从受保护的块中调用该函数

if __name__ == "__main__":

推荐阅读