例如,我按顺序运行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
我可以看到代码的执行正在发生,但在此之后我无法从这些脚本中看到局部变量。
答案 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
访问变量b
和pull
:
var = rc[:].pull(["a","b"])
var.result # or var.r or var.result_dict
[[10, 12020.2], [11, 14], [1, 0], [1, 14425]]
每次运行每个脚本后,对应于a
和b
的值。
所以在script1.py
中,最后,您有a==10
和b==12020.2
。
希望这有帮助。
顺便说一句,我编辑了你所指的link,有一个小错误:
def my_func(my_file):
!python pgm.py my_file
应该是:
def my_func(my_file):
!python pgm.py {my_file}