ipyparallel的LoadBalancedView膨胀内存,我该如何避免?

时间:2017-08-20 11:16:42

标签: python ipython jupyter ipython-parallel

此问题可能与https://github.com/ipython/ipyparallel/issues/207有关,而https://github.com/ipython/ipyparallel/issues/286也未标记为已解决。
我也在这里打开了这个问题{{3}}

我想在jupyter笔记本中使用python和ipyparallel并行执行多个任务,并在本地控制台中执行ipcluster start使用4个本地引擎。 除此之外,还可以使用DirectView,我使用LoadBalancedView来映射一组任务。每个任务大约需要0.2秒(虽然可能会有所不同),每个任务都会执行MySQL查询,然后加载一些数据然后对其进行处理。
使用~45000个任务工作正常,但是,我的记忆力增长非常高。这实际上是不好的,因为我想运行另一个超过660000个任务的实验,我不能再运行了,因为它增加了16 GB的内存限制,然后我的本地驱动器上的内存交换开始了。但是,当使用DirectView时,我的记忆力会变得相对较小并且永远不会充满。但实际上我需要LoadBalancedView
即使在没有数据库查询的情况下运行最小的工作示例,也会发生这种情况(见下文)。

我对ipyparallel库并不是很熟悉,但我已经阅读了有关ipcontroler可能导致此问题的日志和缓存的内容。我仍然不确定它是否是一个错误,或者我是否可以更改一些设置以避免我的问题。

运行MWE

对于在Windows 10上运行的Python 3.5.3环境,我使用以下(最近)软件包:

  • ipython 6.1.0
  • ipython_genutils 6.1.0
  • ipyparallel 6.0.2
  • jupyter 1.0.0
  • jupyter_client 4.4.0
  • jupyter_console 5.0.0
  • jupyter_core 4.2.0

我希望以下示例适用于LoadBalancedView 而没有巨大的内存增长(如果可能的话):

  • 在控制台上启动ipcluster start
  • 使用以下三个单元格运行jupyter笔记本:

    <1st cell>
    import ipyparallel as ipp
    rc = ipp.Client()
    lview = rc.load_balanced_view()
    
    <2nd cell>
    %%px --local
    import time
    
    <3rd cell>
    def sleep_here(i):
        time.sleep(0.2)
        return 42
    
    amr = lview.map_async(sleep_here, range(660000))
    amr.wait_interactive()
    

0 个答案:

没有答案