MemoryError将数据发送到ipyparallel引擎

时间:2015-09-25 22:32:33

标签: ipython ipython-parallel

我们喜欢Ipython.parallel(现在是ipyparallel)。

但是,有些事情让我感到困惑。当向一堆工作人员发送~1.5GB的pandas数据帧时,如果集群有许多节点,我们会得到一个MemoryError。看起来数据帧的副本与引擎(或某些比例数字)一样多。有没有办法避免这些副本?

示例:

In[]: direct_view.push({'xy':xy}, block=True)
# or direct_view['xy'] = xy

对于一个小型集群(例如30个节点),内存会增长并增长,但最终数据会通过并且一切正常。但对于更大的群集,例如80个节点(所有r3.4xlarge只有1个引擎,而不是n_core引擎),然后htop报告增长内存达到最大值(123GB),我们得到:

---------------------------------------------------------------------------
MemoryError                               Traceback (most recent call last)
<ipython-input-120-f6a9a69761db> in <module>()
----> 1 get_ipython().run_cell_magic(u'time', u'', u"ipc.direct_view.push({'xy':xy}, block=True)")

/opt/anaconda/lib/python2.7/site-packages/IPython/core/interactiveshell.pyc in run_cell_magic(self, magic_name, line, cell)
   2291             magic_arg_s = self.var_expand(line, stack_depth)
   2292             with self.builtin_trap:
-> 2293                 result = fn(magic_arg_s, cell)
   2294             return result
   2295 

(...)

注意,在查看https://ipyparallel.readthedocs.org/en/latest/details.html之后,我们尝试仅发送基础numpy数组(xy.values)以尝试进行“非复制发送”,但也获得MemoryError

版本:

  • Jupyter notebook v.4.0.4
  • Python 2.7.10
  • ipyparallel.__version__:4.0.2

0 个答案:

没有答案