Jupyter Lab 中的 ipyparallel 并行函数调用示例
ipyparallel parallel function calls example in Jupyter Lab
我发现很难弄清楚如何使用 jupyter 实验室的 ipyparallel 并行执行两个函数。有人可以给我一个应该如何完成的例子吗?比如运行这两个功能同时出现:
import time
def foo():
print('foo')
time.sleep(5)
def bar():
print('bar')
time.sleep(10)
所以首先你需要确保安装了 ipyparallel
并且 ipycluster
是 运行ning - instructions here.
一旦你这样做了,下面是一些改编代码,将运行你的两个函数并行:
from ipyparallel import Client
rc = Client()
def foo():
import time
time.sleep(5)
return 'foo'
def bar():
import time
time.sleep(10)
return 'bar'
res1 = rc[0].apply(foo)
res2 = rc[1].apply(bar)
results = [res1, res2]
while not all(map(lambda ar: ar.ready(), results)):
pass
print(res1.get(), res2.get())
N.B。我删除了 print 语句,因为您无法从子进程回调到父 Jupyter 会话以进行打印,但我们当然可以 return 结果 - 我在这里阻塞直到两个结果都完成,但是你可以改为在结果可用时打印结果
我发现很难弄清楚如何使用 jupyter 实验室的 ipyparallel 并行执行两个函数。有人可以给我一个应该如何完成的例子吗?比如运行这两个功能同时出现:
import time
def foo():
print('foo')
time.sleep(5)
def bar():
print('bar')
time.sleep(10)
所以首先你需要确保安装了 ipyparallel
并且 ipycluster
是 运行ning - instructions here.
一旦你这样做了,下面是一些改编代码,将运行你的两个函数并行:
from ipyparallel import Client
rc = Client()
def foo():
import time
time.sleep(5)
return 'foo'
def bar():
import time
time.sleep(10)
return 'bar'
res1 = rc[0].apply(foo)
res2 = rc[1].apply(bar)
results = [res1, res2]
while not all(map(lambda ar: ar.ready(), results)):
pass
print(res1.get(), res2.get())
N.B。我删除了 print 语句,因为您无法从子进程回调到父 Jupyter 会话以进行打印,但我们当然可以 return 结果 - 我在这里阻塞直到两个结果都完成,但是你可以改为在结果可用时打印结果