问题标签 [ipython-parallel]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ipython - MemoryError 将数据发送到 ipyparallel 引擎
我们喜欢 Ipython.parallel(现在是 ipyparallel)。
不过,有些事情让我很烦恼。当向一群工作人员发送约 1.5GB 的 pandas 数据帧时,如果集群有很多节点,我们会收到 MemoryError。看起来数据帧的副本与引擎的数量(或某个比例数)一样多。有没有办法避免这些副本?
例子:
对于小型集群(例如 30 个节点),内存不断增长,但最终数据通过,一切正常。但是对于更大的集群,例如 80 个节点(所有 r3.4xlarge 只有 1 个引擎,而不是 n_core 引擎),然后htop
报告内存增长到最大值(123GB),我们得到:
请注意,在查看了https://ipyparallel.readthedocs.org/en/latest/details.html之后,我们尝试仅发送底层 numpy 数组 ( xy.values
) 以尝试进行“非复制发送”但也获得MemoryError
.
版本:
- Jupyter 笔记本 v.4.0.4
- Python 2.7.10
ipyparallel.__version__
: 4.0.2
python - IPython ipyparallel map_sync ImportError
我是新手ipyparallel
,我想使用这个包来实现我的机器学习应用程序的并行计算。
下面是对 的测试ipyparallel
,我add
在 func.py 文件中定义了一个函数,在 test.py 文件中定义了 main 函数。
func.py 的代码是:
test.py 的代码是:
既然你知道map
可以正常运行,但是当运行时map_sync
,命令行返回:
如果我在 test.py 文件中定义函数,map_sync
可以运行:
结果是:
我想知道map_sync
如何使用其他文件中定义的函数?以及如何导入这些功能?由于from py_file import func
不适用于map_sync
.
ipython - ipython 并行和自己的类
我正在研究一个处理数字运算以使用数据数组执行的类。
不幸的是,我无法通过将类的函数应用于创建的直接视图来开始工作。我得到错误:
和班级:
请帮我解决我的问题,抱歉英语不好
ipython-notebook - IPython notebook:定义一个虚拟单元魔法,像往常一样简单地运行单元
我如何定义一个简单的单元魔术,就像%%mymagic
不存在一样执行单元?
上下文是我们正在使用出色的IPython 并行框架。在某些地方,我们也使用它定义的%%px
魔法。但有时我们想在没有集群的情况下运行同一个笔记本(仅限本地)。在这种情况下,%%px
未定义,我将不得不将其注释掉。相反,在这种情况下,我想重新定义%%px
:
%%px
: 将是一个无操作。%%px --local
: 只是运行单元格,没有其他副作用。
或者,如果更简单的话,所有%%px
(有或没有)都可以只运行单元格。--local
另一种方法是创建一个假的 ipyparallel 客户端,即具有 0 个节点(但仍然可以正常运行,例如关于%%px --local
)。但这将是另一个问题。
我尝试过的事情:
%alias_magic px time
(毕竟,我不在乎单元格是否定时)。不幸的是,%%time
不接受争论和窒息--local
。定义我自己的“无操作”魔法:
但这在实际上什么都不做(即不执行单元格)方面做得有点太成功了。
查看IPython/core/magics/execution.py看看是否有任何我可以重用的钩子(只会执行单元格的东西)。我还没有找到,但也许我还不够努力。
还有什么想法吗?
ipython - 在 ipyparallel 引擎之间拆分作业以进行外部 n 线程调用
问题
假设我有 20 个处理器可用。我想将参数传递给
IPython 的外部程序,该程序一次运行 4 个线程最好,并使用 map_async 继续添加作业,直到所有作业完成。下面是示例代码,我相信一次只会为每个作业分配一个进程。这是您将使用“块大小”标志的示例吗?似乎会做相反的事情,即将多个作业发送到一个处理器。
在 IPython 之外启动引擎
IPython 代码
ipython-notebook - 将局部变量传递给 ipyparallel 集群的最佳方法
我在一个 ipython notebook 中运行一个模拟,它由七个相互依赖的函数组成,需要 13 个不同的参数。一些函数在其他函数中被调用,以允许一个函数运行整个模拟。模拟涉及操作两个参数,总共 > 20k 次迭代。两个模拟可以异步运行。由于每次迭代大约需要 1.5 秒,我正在研究并行处理。
当我第一次尝试 ipyparallel 时,我得到了一个未定义的全局名称错误。找不到本地对象是有道理的。为了避免花费大量时间进入兔子洞,将一大堆对象传递给所有工人的最简单方法是什么?以这种方式使用 ipyparallel 时还有其他需要考虑的问题吗?
ipython-parallel - 如何在没有 ipcluster 命令的情况下停止 IPython 集群
我不使用命令启动我的 IPython 集群,ipcluster
而是使用单独的命令ipcontroller
,ipengine
因为我在网络上使用了几台机器。使用ipcluster
命令启动集群时,停止集群相当简单:
ipcluster stop
但是,单独使用各个命令时,我无法找到该过程。
谢谢你的帮助
ipython-notebook - 监控ipyparallel完成状态
我有一个需要一段时间来计算的函数,并且必须使用两个不同的参数迭代 >20k 次:
我看到有一个可用的wait_interactive方法,但是我无法弄清楚如何使用它。在给定的时间间隔打印状态更新的最佳方法是什么?
更新
我添加了all_ids
列表和get_result().wait_interative()
方法。
这会按预期产生定期状态更新,但现在会产生回溯。
ar.get()
在方法找到它们之前,消息 ID 或结果是否在某处被清除?
python-3.x - 在 IPython.parallel 会话中遇到的“Task farm is disabled”或类似的套接字相关问题
IPython.parallel 的负载均衡接口非常棒。我用它在小型集群环境中运行复杂的科学计算。几个百题,每个需要 5~10 分钟在 PC 上完成,被发送到集群。在我开始向集群提交更繁重的任务之前,我可以毫无问题地获取结果。即使分配的任务成功完成,某些引擎也未注册。我使用“ipcontroller --ping=120000”来规避这个问题,但 IPython 现在告诉我“任务农场已禁用”。是什么导致了问题,我该怎么办?
顺便说一句,我在集群上使用 ssh 模式。
python - 使用 ipython 并行将 pandas 数据帧写入 csv
我正在尝试使用 ipython 并行模块将多个熊猫数据帧写入 csv,因为串行执行此操作非常慢。
这是我正在尝试做的一个小例子:
尽管该函数没有 return 语句,但它运行没有错误,因此h
是一个列表None
(并且没有任何内容写入磁盘)。这显然不是这样做的正确方法。我已经成功地操纵了内存中的数据帧,但无法确定是否可以将它们并行写入磁盘。任何帮助深表感谢。