0

我正在使用下面的代码来并行处理 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
4

1 回答 1

3

是的,像这样:

stretch = Linear.linear_stretch

在 Python 中,函数已经是一等对象,并且能够像任何其他对象一样被操作,或者通过引用传递给另一个变量。请注意,函数或方法后面的括号表示解释器调用函数并传递返回值,这就是为什么:

stretch = Linear.linear_stretch()

不会按预期工作。

于 2012-07-17T00:08:24.297 回答