ipyparallel:为什么%% px0,%% px1个单元格仍按顺序执行

时间:2018-08-21 08:09:17

标签: python parallel-processing jupyter-notebook

我有一个jupyter笔记本,在进行一些初始化之后,代码单元[4],[5],[6]彼此无关,可以并行执行以减少吞吐时间。我调查了ipyparallel并获取了模块可执行文件。我还浏览了以下线程并按所述编写了代码。但是结果却不是我所期望的。代码单元[4]-[6]仍按顺序执行。

Is there a way to run multiple cells simultaneously in IPython notebook?

我想知道使用ipyparallel是否可以实现我想要的目标,如果可以,正确的方法是什么。

下面是我的测试代码(我几乎可以确定这不是由于我设置了e[i].block = True,但是将其设置为false时我无法获得输出。):

对于那些需要如何设置ipyparallel模块的信息:

How to set up ipyparallel module

安装iparallel模块:

conda install ipyparallel(或:pip install ipyparallel

启用模块:

ipcluster nbextension enable

启动引擎:

ipcluster start -n <put desired number of engines to run here>

此处代码开始:

In [1]:
        import ipyparallel as ipp
        rc = ipp.Client()
        lbview = rc.load_balanced_view()

In [2]:
        e = [None]*4
        for i in range(0,4):
            e[i]=rc[i]
            e[i].block = True
            e[i].activate('%d'%i)
In [3]:
        %%px
        import matplotlib.pyplot as plt
        import time
In [4]:
        %%px0   
        print("I am doing some heavy calculation for Class A")
        fig = plt.figure(figsize=(15,10))
        plt.plot([1,2,3],[1,2,3])
        print(time.ctime())
In [5]:
        %%px1   
        print("I am doing some heavy calculation for Class B")
        fig = plt.figure(figsize=(15,10))
        plt.plot([1,2,3],[3,2,1])
        print(time.ctime())

In [6]:
        %%px2   
        print("I am doing some heavy calculation for Class C")
        fig = plt.figure(figsize=(15,10))
        plt.plot([1,2,3],[1,2,1])
        print(time.ctime())

0 个答案:

没有答案