我使用下面的代码来并行处理numpy数组。在这种情况下,目标函数对输入数据执行简单的线性拉伸。数组被分段,然后以块的形式馈送到池中。由于python帖子的大量并行处理,这非常有效。
pool = [multiprocessing.Process(target=linear_stretch, args= (shared_arr,slice(i, i+step), 35, 200, 2.0)) for i in range (0, y, step)]
我的问题是,是否可以执行以下操作:
stretch = Linear.linear_stretch()
我在哪里创建函数的对象(请更正我的词汇!)然后在multiprocessing.Process中调用它。
该功能所在的模块目前如下所示:
Linear.py
import numpy
def linear_stretch(args):
#Do some stuff
答案 0 :(得分:3)
是的,就像这样:
stretch = Linear.linear_stretch
在Python中,函数已经是第一类对象,并且能够像任何其他对象一样被操作,或者通过引用传递给另一个变量。请注意,函数或方法后面的括号表示解释器调用函数并传递返回值,这就是原因:
stretch = Linear.linear_stretch()
无法按预期工作。