问题标签 [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.

0 投票
2 回答
701 浏览

python - 使用 IPython Parallel(或其他包)进行令人尴尬的并行任务,具体取决于不可拾取的对象

我经常遇到一些问题,我想在一组很多很多对象上快速做一些简单的事情。我自然的选择是使用 IPython Parallel,因为它很简单,但我经常不得不处理不可拾取的对象。在尝试了几个小时之后,我通常会放弃自己在一台计算机上运行我的任务,或者做一些愚蠢的事情,比如半手动地分割东西以在多个 python 脚本中运行。

举一个具体的例子,假设我想删除给定 S3 存储桶中的所有键。

我通常不假思索地做的是:

问题是其中的Key对象boto是不可拾取的(*)。这对我来说经常发生在不同的环境中。这也是我尝试过的多处理、execnet 以及所有其他框架和库的问题(原因很明显:它们都使用相同的pickler 来序列化对象)。

你们也有这些问题吗?有没有办法可以序列化这些更复杂的对象?我是否必须为这个特定的对象编写自己的pickler?如果我这样做了,我如何告诉 IPython Parallel 使用它?我如何写一个pickler?

谢谢!


(*) 我知道我可以简单地列出键名并执行以下操作:

并在 IPython 集群的每个引擎中定义getKey函数。这只是我经常发现的更普遍问题的一个特定实例。也许这是一个不好的例子,因为它可以通过另一种方式轻松解决。

0 投票
1 回答
5052 浏览

python - 在 IPython 并行进程中打印到标准输出

我是 IPython 新手,想在运行 IPython 并行集群函数时将中间结果打印到标准输出。(我知道对于多个进程,这可能会破坏输出,但这很好——它只是用于测试/调试,而且我正在运行的进程足够长,这样的冲突不太可能发生。)我检查了IPython 的文档,但找不到打印并行函数的示例。基本上,我正在寻找一种方法将子进程的打印输出重定向到主标准输出,IPython 相当于

在进程内打印不起作用:

返回

因此计算正确执行,但函数 ff 中的打印语句永远不会打印,即使所有进程都已返回。我究竟做错了什么?如何让“打印”工作?

0 投票
1 回答
601 浏览

ipython - ipython 0.13 zmq 错误

我遇到了 ipython 集群的奇怪行为。计算完成,但许多结果从未到达客户端(并且引擎在完成第一次计算后只是空闲)。

我怀疑 zmq 有问题,因为 1)我不时看到以下错误:

我使用 pyzmq 13.0.0(由 pip 安装)和 zeromq 3.2.2,由 pyzmq 的安装程序编译。我使用 ipython 13.1 和 python 2.7.3。

关于这可能是什么的任何建议,如果不是,我如何找出更多信息为什么会发生这些错误?

更新:事实证明,减速是由于 ipcontroller 的任务队列很长,然后占用了 100% 的 CPU 并且严重滞后。那是一个单独的问题,但我仍然希望得到有关上述内容的反馈。

0 投票
2 回答
319 浏览

ipython - 在等待下一个 ipython 并行映射结果时处理异常

我想在 ipython 并行映射到达时迭代一些异步结果。我能找到的唯一方法是遍历结果对象。但是,如果其中一项任务引发异常,则迭代终止。有没有办法做到这一点?请参见下面的代码,当第二个作业引发异常时,迭代终止。

给出在报告作业 3 和 4 之前停止的以下输出

有没有办法做到这一点?

0 投票
1 回答
4529 浏览

python - IPython.parallel 不使用多核?

我正在试验IPython.parallel并且只想在不同的引擎上启动几个 shell 命令。

我有以下笔记本:

单元格 0:

并启动命令:

单元格 1:

单元格 2:

单元格 3:

它所做的是使用mincemeatMapReduce 的实现。当我启动第!python mincemeat.py 127.0.0.1一个内核时,它使用了大约 100% 的一个内核,然后当我启动第二个内核时,每个内核的使用率下降到 50%。我的机器上有 4 个内核(+虚拟内核),可以在直接从终端启动时使用它们,但不能在 Notebook 中使用。

有什么我想念的吗?我想每个!python mincemeat.py 127.0.0.1命令使用一个核心。

编辑:
为清楚起见,这是不使用多核的另一件事:

单元格 1:

单元格 2:

我想我错过了一些东西。我相信如果可用的话,这两个单元应该运行一个不同的内核。然而,情况似乎并非如此。CPU 使用率再次表明它们共享相同的内核并使用 50%。我做错什么了?

0 投票
1 回答
581 浏览

dictionary - IPython中字典的并行化函数

到目前为止,我已经通过将函数映射到使用函数分布到各个集群的列表来并行化函数map_sync(function, list)

现在,我需要对字典的每个条目运行一个函数。

map_sync 似乎不适用于字典。我还尝试分散字典并使用装饰器并行运行该函数。然而,字典似乎也不适合分散。有没有其他方法可以并行化字典上的函数而不必转换为列表?

到目前为止,这些是我的尝试:

不用说,当我运行函数本身时,我得到一个错误:

AttributeError
Traceback(最近一次调用最后一次) in () in run(dict) AttributeError: 'str' object has no attribute 'iteritems'

我不知道它是否相关,但我使用的是连接到 Amazon AWS 集群的 IPython Notebook。

0 投票
1 回答
849 浏览

python - 在远程 IPython 集群上运行作业时出现“execution_count”错误

我正在远程 Linux 机器上运行 IPython 集群 (SSH),并且我正在使用带有 IPython 的 Mac OS X 来使用该集群。在 Mac 上的 IPython 中,我写道:

从哪里'~/ipcontroller-client.json'复制的文件remote_linux_machine。到目前为止一切正常。

当我尝试使用并行魔法时%px,出现错误:

同样的想法,但是当我在localhost上运行集群时,它运行良好。

对于远程 SSH 集群情况,并行魔法是否应该起作用?

0 投票
1 回答
1091 浏览

python - IPython.parallel ValueError:无法从内存缓冲区创建 OBJECT 数组

我正在尝试编写一个要在多个 IPython 引擎中执行的函数。该函数将 pandas Series 作为参数。Series 的每个元素都是一个字符串,整个 Series 构成了一个用于 TF.IDF 计算的语料库。

在阅读了 IPython 并行文档和一些教程之后,这似乎很简单,我想出了以下内容:

我得到了这个错误:

我不确定问题是什么,有人可以启发我吗?


更新

显然,该错误准确地说明了它所说的内容。如果我这样做:

它有点工作。

那么下一个问题是,这是 IPython 的一个特性还是一个限制?

0 投票
1 回答
768 浏览

celery - 芹菜与 Ipython 并行

我查看了两者的文档,但不确定给定应用程序的最佳选择是什么。我仔细研究了芹菜,因此将以这些术语给出示例。

我的用例类似于这个问题,每个工作人员远程加载一个大文件(每台机器一个文件),但是我还需要工作人员包含持久对象。因此,如果工作人员完成任务并返回结果,然后再次调用,我需要为新任务使用先前创建的变量。

在每个任务调用中重复创建对象太浪费了。我还没有看到一个 celery 的例子让我相信这是可能的,我希望使用worker_init 信号来完成这个。

最后,我需要一个中央集线器来跟踪所有工人在做什么。这似乎暗示了一种客户端-服务器架构,而不是 Celery 提供的架构,这是正确的吗?如果是这样,考虑到要求,IPython Parallel 会是一个不错的选择吗?

0 投票
2 回答
727 浏览

shell - 使用 Django python 脚本加速 postgresql 从文本文件中添加数据

我正在使用配置如下的服务器:

RAM - 56GB 处理器 - 2.6 GHz x 16 核 如何使用 shell 进行并行处理?如何利用处理器的所有内核?

我必须从包含数百万个条目的文本文件中加载数据,例如一个文件包含 50 万行数据。我正在使用 django python 脚本在 postgresql 数据库中加载数据。但是即使我有这么好的配置,在数据库中添加数据也需要很多时间。服务器,但我不知道如何并行利用服务器资源,以减少处理数据的时间。昨天我只从文本文件加载了 15000 行数据到 postgresql,花了将近 12 个小时才完成。我的 django python 脚本如下: