此问题可能与https://github.com/ipython/ipyparallel/issues/207有关,该问题也尚未标记为已解决。
我也在这里打开了这一期https://github.com/ipython/ipyparallel/issues/286
我想在jupyter笔记本中使用python和ipyparallel并行执行多个任务,并通过在本地控制台中执行ipcluster start
来使用4个本地引擎。
除了可以使用DirectView
之外,我使用LoadBalancedView
来映射一组任务。每个任务大约需要0.2秒(可能会有所不同),每个任务都会执行一个MySQL查询,在那里加载一些数据,然后进行处理。
处理大约45000个任务可以很好地工作,但是,我的记忆力增长得非常快。这实际上很糟糕,因为我想用超过660000个任务运行另一个实验,因为这会使我16GB的内存限制膨胀,然后本地驱动器上的内存交换就开始了。但是,当使用DirectView
时,我的内存会变得相对较小,并且永远不会满。但我实际上需要LoadBalancedView
。
即使在运行一个没有数据库查询的最小工作示例时,也会发生这种情况(见下文)。在
我不太熟悉ipyparallel库,但我读过一些关于ipcontroller所做的日志和缓存的文章,这可能会导致这个问题。我仍然不确定这是一个错误还是我可以改变一些设置来避免我的问题。在
对于运行在Windows 10上的Python3.5.3环境,我使用以下(最新)软件包:
我希望下面的例子适用于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()
目前没有回答
相关问题 更多 >
编程相关推荐