我定义了一个运行bash脚本的Python函数。假设这个函数是:calc(x,y,z)
。如果我在Python中使用一些变量运行这个函数,
>>> calc(1,2,3)
它生成一个C代码,使用变量(x=1, y=2, z=3)来模拟某些东西,编译C代码并执行已编译的输出文件。
我想在Jupyter笔记本中同时运行多个具有不同(x,y,z)的calc(x,y,z)。正如您可能已经注意到的那样,问题在于Jupyter笔记本中的单元格是按顺序执行的。如果我运行三个calc函数,则需要三倍于一个函数运行时间的时间。
我尝试了两种方法,但它们效果不佳。
- Use
multiprocessing
module: By using the module, it is possible to execute multiplecalc
s simultaneously in "one cell". But for later analysis, I would like to execute multiple cells simultaneously which include only onecalc
each using different processors (or cpu cores). Use
ipyparallel
cell magic (inspired by this answer): I tried as following after importipyparallel
# Cell 1 %%px --targets 0 # use processor 0 calc(1,1,1)
.
# Cell 2 %%px --targets 1 # use processor 1 calc(2,2,2)
.
# Cell 3 %%px --targets 2 # use processor 2 calc(3,3,3)
但是这些单元格是按顺序执行的:在完成单元格1的模拟后,才会执行单元格2,单元格3也是类似。
如何使用不同的核心运行多个Jupyter单元格?