Ipython并行脚本运行并返回局部变量

时间:2015-08-27 13:46:26

标签: parallel-processing ipython cluster-computing ipython-notebook

例如,我按顺序运行4个脚本:

%run -i script1.py
%run -i script2.py
%run -i script3.py
%run -i script4.py

执行时间很长。在iPython笔记本中是否有任何方法可以并行运行脚本并从所有这些中返回局部变量(2或3个重要的变量)?在顺序执行中它工作正常但很长。先感谢您。

我尝试应用此topic中的代码但仍停留在第一部分:

def my_func(my_file):
      !python pgm.py my_file

或在我的情况下:

 def my_func(my_file):
      %run -i $my_file

我可以看到代码的执行正在发生,但在此之后我无法从这些脚本中看到局部变量。

1 个答案:

答案 0 :(得分:1)

假设您启动了4个引擎,并且您将在每个引擎上发送4个脚本。

完成后

rc = parallel.Client()
view = rc.load_balanced_view()
r = view.map_async(my_func, ["script1.py", "script2.py", "script3.py", "script4.py"])

一旦完成,您可以使用a访问变量bpull

var = rc[:].pull(["a","b"])
var.result # or var.r or var.result_dict
[[10, 12020.2], [11, 14], [1, 0], [1, 14425]]

每次运行每个脚本后,对应于ab的值。

所以在script1.py中,最后,您有a==10b==12020.2

希望这有帮助。

顺便说一句,我编辑了你所指的link,有一个小错误:

def my_func(my_file):
      !python pgm.py my_file

应该是:

def my_func(my_file):
      !python pgm.py {my_file}