【发布时间】:2015-01-22 00:03:29
【问题描述】:
我正试图围绕在我的 Python 代码中应用并行计算的基本概念展开思考。我已经阅读了很多关于 IPython 并行的教程;但是,我似乎并不完全理解如何在一些基本的 python 代码中优雅地应用它。例如my_script.py中的demo代码如下:
# imports
import numpy as np
from IPython.parallel import Client
# class definition
class MyClass():
def do_something(self, x, y):
return np.sum(x, y)
# some variables
x = [1, 2, 3, 4, 5, 6, 7, 8 ,9, 10]
y = [1, 2, 3, 4, 5, 6, 7, 8 ,9, 10]
# create client and direct view to all engines available
client = Client()
dview = client[:]
dview.block = True
# here is what i'm currently doing to achieve parallelism
dview.execute('import numpy as np')
dview['MyClass'] = MyClass
dview.scatter('x', x)
dview.scatter('y', y)
dview.execute('my = MyClass()')
dview.execute('z = my.do_something(x, y)')
z = dview.gather('z')
我的问题:
有没有办法在所有命名空间中将 numpy 作为 np 一次而不是两次? (一次在第一个上部导入中,然后在第二次在 execute() 中。
与第一个问题相同,但针对 MyClass。有没有更优雅的方式将 MyClass 包含在所有命名空间中,而不是显式地将类类型作为变量推送?
您将如何以最优雅的 pythonic/ipythonic 方式编写上面的代码?
【问题讨论】:
标签: python parallel-processing ipython