Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python i平行';s LoadBalancedView内存膨胀,如何避免?_Python_Ipython_Jupyter_Ipython Parallel - Fatal编程技术网

Python i平行';s LoadBalancedView内存膨胀,如何避免?

Python i平行';s LoadBalancedView内存膨胀,如何避免?,python,ipython,jupyter,ipython-parallel,Python,Ipython,Jupyter,Ipython Parallel,此问题可能与尚未标记为已解决的问题有关 我也在这里打开了这个问题 我想通过在本地控制台中执行ipcluster start,在jupyter笔记本中使用python和ipyparallel并行执行多个任务,并使用4个本地引擎。 除此之外,还可以使用DirectView,我使用LoadBalancedView映射一组任务。每个任务大约需要0.2秒(虽然可能有所不同),每个任务执行一个MySQL查询,在其中加载一些数据,然后对其进行处理 处理大约45000个任务可以很好地工作,但是,我的记忆力增长非

此问题可能与尚未标记为已解决的问题有关
我也在这里打开了这个问题

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

即使在没有数据库查询的情况下运行最小的工作示例,也会发生这种情况(参见下文)

我对ipyparallel库不是很熟悉,但我读过一些关于ipcontroller所做的日志和缓存的内容,这可能会导致这种情况。我仍然不确定这是否是一个bug,或者我是否可以更改一些设置来避免我的问题

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

  • ipython 6.1.0
  • ipython_genutils 6.1.0
  • I并行6.0.2
  • jupyter 1.0.0
  • jupyter_客户端4.4.0
  • jupyter_控制台5.0.0
  • jupyter_core 4.2.0
我希望下面的示例适用于
LoadBalancedView
,而不需要巨大的内存增长(如果可能的话):

  • 在控制台上启动
    ipcluster启动
  • 使用以下三个单元格运行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()
    
    
    作为ipp并行导入IPY
    rc=ipp.Client()
    lview=rc.load\u balanced\u view()
    %%px——本地
    导入时间
    这里的def sleep_(i):
    睡眠时间(0.2)
    返回42
    amr=lview.map_async(此处为sleep_,范围为660000))
    amr.wait_interactive()