有没有办法在IPython笔记本中同时运行多个单元格?

有没有办法在IPython笔记本中同时运行多个单元格?,ipython,ipython-notebook,Ipython,Ipython Notebook,我笔记本中的一个单元执行很长时间,而机器中的另一个CPU处于空闲状态。是否可以并行运行其他单元格?可以ipyparallel(以前是ipythonparallel),它将向您展示如何生成多个IPython内核。在您可以自由地跨内核分发工作之后,您可以使用%%px0%%px1%%px999(设置后)在特定引擎上执行单元格,这实际上对应于单元格的并行执行。我建议你也去看看。这并不能直接回答你的问题,但我认为这会帮助很多有同样问题的人。您可以轻松地在笔记本之间移动变量,然后在另一个笔记本上继续运行函数

我笔记本中的一个单元执行很长时间,而机器中的另一个CPU处于空闲状态。是否可以并行运行其他单元格?

可以
ipyparallel
(以前是
ipythonparallel
),它将向您展示如何生成多个IPython内核。在您可以自由地跨内核分发工作之后,您可以使用
%%px0
%%px1
<代码>%%px999(设置后)在特定引擎上执行单元格,这实际上对应于单元格的并行执行。我建议你也去看看。

这并不能直接回答你的问题,但我认为这会帮助很多有同样问题的人。您可以轻松地在笔记本之间移动变量,然后在另一个笔记本上继续运行函数,然后将结果移回主笔记本

例如:

笔记本1:

%store X
%store y
%store -r X
%store -r y

new_df = ...
%store new_df
%store -r new_df 
笔记本2:

%store X
%store y
%store -r X
%store -r y

new_df = ...
%store new_df
%store -r new_df 
笔记本1:

%store X
%store y
%store -r X
%store -r y

new_df = ...
%store new_df
%store -r new_df 

我想介绍一个具有此功能的库,它不需要多个笔记本等

是Python中高效的并行编程

配置

导入parsl
从parsl.app.app导入python\u应用程序、bash\u应用程序
部分加载()
例如,我从中编辑了这个片段

#延迟后生成随机数的应用程序
@python_应用程序
def生成(限制、延迟):
从随机导入randint
导入时间
时间。睡眠(延迟)
返回randint(1,限制)
#生成5个介于1和10之间的随机数
导入时间
st=时间。时间()
兰特•努姆斯=[]
对于范围(5)中的i:
rand_nums.append(生成(10,1))
#等待所有应用程序完成并收集结果
输出=[i.result()表示i,单位为rand\u nums]
et=时间。时间()
打印(f“执行时间:{et-st:.2f}”)
#打印结果
打印(输出)
结果:

Execution time: 3.00
[1, 6, 4, 8, 3]
请注意,代码执行所需的时间是3s而不是5s

因此,您可以在单元格中调用函数(在本例中是
generate(…)
)。此
生成(…)
将返回一个对象。然后,如果在对象上调用
.result()
,它将:

  • 如果程序正在等待结果,请停止程序
  • 如果已完成,则返回结果
  • 因此,只要在最后几个单元格中调用
    .result()
    ,子例程就会在后台运行。你可以确定,在最后几个单元格中,结果是可以得到的

    关于数据依赖性,parsl非常智能,它将等待依赖的数据,即使它用
    @python\u app
    修饰