【发布时间】:2019-05-11 21:44:24
【问题描述】:
我定义了一个运行 bash 脚本的 python 函数。假设函数是:calc(x,y,z)。如果我在 python 中使用一些变量运行这个函数,
>>> calc(1,2,3)
它生成一个使用变量(x=1, y=2, z=3) 模拟某些东西的C 代码,编译C 代码并执行编译后的输出文件。
我想在 jupyter notebook 中同时运行多个 calc(x,y,z)s 和不同的 (x,y,z)s。正如您可能注意到的,问题在于 jupyter notebook 中的单元格是按顺序执行的。如果我运行三个calc 函数,它所花费的时间是一个函数运行时间的三倍。
我尝试了两种方法,但效果不佳。
- 使用
multiprocessing模块:通过使用该模块,可以在“一个单元格”中同时执行多个calcs。但为了以后的分析,我想同时执行多个单元,其中仅包含一个calc,每个单元使用不同的处理器(或 cpu 内核)。 -
使用
ipyparallel细胞魔法(受此answer 启发):我在导入ipyparallel后尝试如下操作# 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)
但单元是按顺序执行的:单元 2 是在单元 1 模拟完成后执行的,与单元 3 类似。
如何使用不同的内核运行多个 jupyter 单元?
【问题讨论】:
标签: python parallel-processing jupyter-notebook ipython