我定义了一个运行 bash 脚本的 python 函数。假设该函数是:calc(x,y,z)。如果我在 python 中使用一些变量运行这个函数,
>>> calc(1,2,3)
Run Code Online (Sandbox Code Playgroud)
它生成一个使用变量模拟某些内容的 C 代码(x=1, y=2, z=3),编译 C 代码并执行编译后的输出文件。
我想在 jupyter 笔记本中同时运行多个calc(x,y,z)具有不同 s 的 s 。(x,y,z)您可能已经注意到,问题在于 jupyter Notebook 中的单元格是按顺序执行的。如果我运行三个calc函数,则需要比运行一个函数的时间长三倍的时间。
我尝试了两种方法,但效果不佳。
multiprocessing模块:通过使用模块,可以calc在“一个单元”中同时执行多个操作。但为了以后的分析,我想同时执行多个单元,其中每个单元仅calc使用不同的处理器(或 CPU 内核)。使用ipyparallel细胞魔法(受此答案启发):导入后我尝试如下ipyparallel
# Cell 1
%%px --targets 0 # use processor 0
calc(1,1,1)
Run Code Online (Sandbox Code Playgroud)
。
# Cell 2
%%px --targets 1 # use processor 1
calc(2,2,2)
Run Code Online (Sandbox Code Playgroud)
。
# Cell 3
%%px …Run Code Online (Sandbox Code Playgroud)