Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Juypter中带有cython的Dask:ModuleNotFoundError:没有名为'的模块_仙人掌魔术_Cython_Dask - Fatal编程技术网

Juypter中带有cython的Dask:ModuleNotFoundError:没有名为'的模块_仙人掌魔术

Juypter中带有cython的Dask:ModuleNotFoundError:没有名为'的模块_仙人掌魔术,cython,dask,Cython,Dask,我得到: 被杀害的工人:(“(‘来自熊猫-1445321946b8a22fc0ada720fb002544',4)”,”tcp://127.0.0.1:45940") 我已经阅读了关于后一个错误消息的文章,但这与stacktrace顶部的错误消息一起出现时令人困惑: distributed.utils-错误-工作进程已存在tcp://127.0.0.1:35780 实际错误通过管道传输到运行my notebook的Jupyter notebook命令的终端: ModuleNotFoundErro

我得到:

被杀害的工人:(“(‘来自熊猫-1445321946b8a22fc0ada720fb002544',4)”,”tcp://127.0.0.1:45940")

我已经阅读了关于后一个错误消息的文章,但这与stacktrace顶部的错误消息一起出现时令人困惑:

distributed.utils-错误-工作进程已存在tcp://127.0.0.1:35780

实际错误通过管道传输到运行my notebook的
Jupyter notebook
命令的终端:

ModuleNotFoundError:没有名为“\u cython\u magic\u faba6120a194ab58ae9efd1da474433f”的模块


既然我在我的案例中发现了详细的错误,那么我将自己研究如何解决这个问题。关于这种特殊配置的精确提示会很好,但我想将所有cython代码提取到笔记本之外的python代码更明智,与其让dask了解cython magic命令,不如说具体的cython错误看起来确实是源于将编译配置为对工作人员可见的问题。执行
%%cython
时,将创建并构建一个临时扩展,并将其导入本地(客户端)会话,而不安装到python环境中。我不确定这到底是怎么发生的


您至少应该确保在编译cython单元后创建客户端,然后它们可能会继承所需的环境,但是很有可能cell magic的monkey补丁太复杂了,在任何情况下都无法工作。

特定的cython错误看起来确实是源于将编译配置为对工作人员可见的问题。执行
%%cython
时,将创建并构建一个临时扩展,并将其导入本地(客户端)会话,而不安装到python环境中。我不确定这到底是怎么发生的


您至少应该确保在编译cython cell后创建客户端,然后它们可能会继承所需的环境,但cell magic的猴子补丁很有可能在任何情况下都太复杂而无法工作。

下面是一个完整的玩具示例(使用SLURM集群在JupyterLab上测试)。 本例使用Cython编译了一个简单的函数,该函数对两个整数求和,但当然可以对复杂(更有用)的代码应用相同的技术。
这里的关键技巧是必须设置工作人员来查找和导入Cython库。
这需要导入
pyximport
,调用
pyximport.install()
,然后在每个辅助进程上导入Cython生成的模块。这是使用
注册\u worker\u callback()
完成的。
请注意,Cython生成的模块放在
中,这里是一个完整的玩具示例(使用SLURM集群在JupyterLab上测试)。
本例使用Cython编译了一个简单的函数,该函数对两个整数求和,但当然可以对复杂(更有用)的代码应用相同的技术。
这里的关键技巧是必须设置工作人员来查找和导入Cython库。
这需要导入
pyximport
,调用
pyximport.install()
,然后在每个辅助进程上导入Cython生成的模块。这是使用
注册\u worker\u callback()
完成的。
请注意,Cython生成的模块位于
中,非常感谢。因此,一般来说,如果我们不使用Jupyter cell magic,并且我们所有的cython代码都是在python库代码中定义的(并且可能只在Jupyter笔记本中从那里运行),那么在dask
apply
中使用cython函数安全吗?cython函数应该像任何其他python函数一样序列化或可导入,所以成功地进入了员工的记忆空间。非常感谢。因此,一般来说,如果我们不使用Jupyter cell magic,并且我们所有的cython代码都是在python库代码中定义的(并且可能只在Jupyter笔记本中从那里运行),那么在dask
apply
中使用cython函数安全吗?cython函数应该像任何其他python函数一样序列化或可导入,所以成功地进入了员工的记忆空间。非常感谢。显然,我当时放弃了这个,但我认为这个答案现在应该是一个宝贵的资源。我想知道slurm是如何融入其中的,我只是最近才意识到这一点,如果你能在那里多加几句关于集成的话,或者只是在一个简短的评论中,那就太好了。例如,要在跨越多台机器的slurm集群上运行此任务,是否需要比上述更多的资源,也就是说作为分布式而不是本地并发作业?非常感谢。显然,我当时放弃了这个,但我认为这个答案现在应该是一个宝贵的资源。我想知道slurm是如何融入其中的,我只是最近才意识到这一点,如果你能在那里多加几句关于集成的话,或者只是在一个简短的评论中,那就太好了。例如,要在跨越多台机器的slurm集群上运行此任务,是否需要比上述更多的资源,也就是说作为分布式而不是本地并发作业?