问题标签 [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.
python - ipython并行中的异步评估
自从很棒的1.0.0
发布以来,我一直在玩iPython
并行接口。我要做的是建立一个异步随机梯度下降系统。在我看来,我想向所有节点发送一个函数,并在结果出来时得到结果。从我能够实现的内容和从文档中一目了然,实现的标准视图并不真正支持这一点。该get(timeout)
方法可以做到这一点,但是您不能真正<ASync_result>
使用超时循环遍历对象中的每个条目。我设法让它运行的方式如下
现在,在你们都尖叫这是可怕的代码和这样做的愚蠢方法之前,我知道。我可以让这种特殊的方式做得更好,但我只是想知道在 IPython.parallel 中是否有一些内置的方式来做类似的事情。
提前感谢任何抽出时间的人。
最好的,阿尔。
ipython - 是否可以强制 ipengines 完全重置所有局部变量和导入?
我的工作流程是:启动 ipcontroller/ipengines,然后使用不同的参数多次运行“python test_script.py”。该脚本包含一个 map_async 调用。ipengines 无法识别调用脚本之间的代码更改,并且静态类变量不会重置为其默认值。似乎一个神奇的 %reset 调用可以解决问题,但尝试在 ipengines 上执行此命令似乎没有任何作用。
python - 使用 scipy.optimize 与 ipython 并行最小化函数
我发现了一堆关于类似问题的问题(例如这个),在处理 iPython.Parallel 时,酸洗闭包的问题似乎无处不在,但我无法在任何地方解决这个特定问题。所以我的问题如下:
我想为使用 ipclusterf( a, b )
的多个值的函数求解零。本身就是一个复杂的函数。让我们用一个愚蠢的例子b
f
好吧,这就是我正在做的事情的一般概念。问题是,如果我尝试创建一个返回根的函数,它将必须创建一个闭包并将其传递给scipy.optimize.fsolve
(我认为)。例如,我尝试过
但是如果你使用iPython.Parallel
'smap
它将无法腌制闭包。我想不出任何办法,你可以吗?
我想重现错误的最小示例是
ValueError: Sorry, cannot pickle code objects with closures
如果有人能想到解决方法,它会为我抛出错误......
干杯,谢谢大家,所以肯定会帮助很多人:)。
python - 在函数中检索引擎 ID
我正在使用 ipython 并行来安排大量使用load_balanced_view
. 每个作业用于subprocess.Popen
运行代码并检索标准输出和标准错误。然后我想将它们保存到日志文件中。
这是我正在运行的代码结构的示例:
因为我将使用超过 1 个处理器,所以在最好的情况下,日志文件看起来会很乱。一个解决方案可能是锁定文件,这样一次只有一个进程可以写入它。这应该是可行的,但在我看来有点矫枉过正。
更好的解决方案可能是为每个引擎打开一个日志文件,使用文件名中的引擎 ID。像这样的东西:"logfile_{}.log".format(id)
所以问题是:有没有办法从内部检索引擎ID run_exe
?
python - 无法将数据帧推入 ipython 并行引擎
我将一个 1MM 行和 35 列的 pandas 数据框对象推送到 ipython 并行引擎的 directView 中。但是,我无法将此数据(甚至是空数据帧)推送到引擎中,因为我的函数无法打印数据帧的长度。这是我的代码片段。
查看 asyn.stdout 后,这是我收到的错误。任何帮助表示赞赏!:
ipython - 从后台子进程的 Ipython notebook 中的 Cell Magic 中检索 python 变量
我正在尝试使用 ipython notebook 对我的 mongodb 数据库进行快速而肮脏的查询。
我有几个单元格,每个单元格都有自己的查询。由于 mongodb 可以支持多个连接,我想并行运行每个查询。我认为一个理想的方法就是做类似的事情
您可以想象几个单元格,每个单元格都有自己的查询。但是我无法访问 pymongo.find 返回的查询。
我知道这是一个在单独线程中运行的子进程,但我不知道如何访问数据,因为该进程很快被销毁并且命名空间消失了。
我在这里找到了 %%bash 的类似帖子,但我无法将其转换为 python 命名空间。
python - IPython 引擎返回不同的结果
希望有人可以启发我,而不必发布很多令人困惑的代码。
我正在使用 IPython.parallel 来处理神经网络。为了找到错误,我决定使用相同的输入数据向每个客户端发送相同的网络。我希望每个客户都返回相同的答案,大多数情况下确实如此。然而,有时我会从每个客户那里得到截然不同的结果。
这只是运行代码 5 次不同时间的示例。每次运行代码时都会构建一个新网络,因此我希望在运行之间有不同的解决方案,但是,每次运行我都会向每个客户端发送相同的网络......
我正在使用 apply_async 将进程发送到不同的客户端(所有客户端都在一台本地机器上。)
在处理过程中没有生成随机数,我使用的唯一数学函数是内置的pow()
和numpy.tanh()
.
关于追踪正在发生的事情的最佳方法的任何想法?
python - 使用 Sympy 的 `lambdify` 和 `IPython.parallel` 时出错
对于我正在进行的数值计算,我需要定义一个大的刘维利矩阵。我没有逐个元素地对它进行编程,这既繁琐又容易出错,我使用 Sympy 以代数方式构造它,然后使用它lambdify
来制作用于数值工作的 numpy 矩阵。这适用于小任务,但是当我使用IPython.parallel
.
例如,在这里,我构造了一个没有任何意义的愚蠢的 sympy 矩阵:
在本例中,我可以直接使用相同的嵌套循环构造一个 numpy 矩阵,但在我的实际问题中,矩阵并非如此。无论如何,在插入数字之前,很高兴看到它以代数符号写出来。
我用来lambdify
为我的数值工作获取一个 Numpy 矩阵:
假设我想做一个涉及该矩阵(例如行列式)的计算,该矩阵以 的多个值进行评估y
:
这个例子并不昂贵,但如果是这样,我会像这样分配任务:
我收到以下错误:
这不起作用,因为显然需要ImmutableMatrix
定义 lambda 函数,这是我从未听说过的,甚至不是我们lambdified 的矩阵类型:
无论如何,我不希望我的引擎运行任何 Sympy 代码。我要分发的任务是数值的,而不是代数的,希望lambdify 已经生成了可以独立运行的numpy 代码。
从 sympy 生成可并行化的 numpy 代码的正确方法是什么?
版本
这是使用 Python 2.7.3、IPython 1.1.0、Sympy 0.7.4.1 和 Numpy 1.8.0 完成的。我用来写这个问题的笔记本可以在nbviewer上访问。
python - iPython 中 LoadBalancedView 中的非 DAG 任务依赖项
我想使用 ipython 与 LoadBalancedView 并行训练很多模型。
但是,我希望在每个任务完成后,特定节点必须与另一个节点“检查”(我们称之为任务安排器)以确保它们应该继续,如果是,它应该执行哪个任务。
这不是真正的 DAG,这只是客户端与另一个任务安排节点通信以控制任务完成的时间和顺序。
我还需要能够确保退出的节点在失败时会被其他人接手。
我怎么能在 iPython 并行中做到这一点?
编辑:澄清一下,我喜欢 iPython 并行处理任务、报告结果、套接字通信等的能力。但我本质上需要在我从主进程和进程中选择时将个别任务分配给个别机器的能力并在任务完成或给出时添加任务。
编辑#2:啊,也许我可以锁定表,然后手动更改此表中任务的顺序(?)。锁实现了阻止客户端获取更多任务(他们必须等待),我可以根据任务本身将顺序更改为我喜欢的任何内容。
python - 在集群中调试 iPython 并行引擎
我正在尝试追踪一个错误,其中 iPython 集群上的处理结果与本地运行同一进程时发生的结果不匹配。即使 iPython 集群完全是本地的,并且 CPU 只是运行多个引擎。
我似乎无法弄清楚如何在引擎上处理数据时记录数据。打印语句不起作用,即使我尝试让每个引擎写入单独的文件,文件也会被创建但没有写入任何内容。
必须有一种方法可以调试在 iPython 并行引擎上运行的代码。