【问题标题】:multiprocessing.Process - Variable as functionmultiprocessing.Process - 变量作为函数
【发布时间】:2012-07-15 21:24:51
【问题描述】:

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

【问题讨论】:

    标签: python numpy multiprocessing


    【解决方案1】:

    是的,像这样:

    stretch = Linear.linear_stretch
    

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

    stretch = Linear.linear_stretch()
    

    不会按预期工作。

    【讨论】:

    • +1。但是,取决于......很难解释的东西(请参阅多处理对泡菜协议的扩展),您可能能够也可能不能将函数传递给子进程。试试看,如果不起作用,请回来寻求更多帮助。
    • 工作得非常好。不知道为什么我没有测试/阅读文档...谢谢!
    猜你喜欢
    • 1970-01-01
    • 2020-09-17
    • 2013-12-23
    • 2014-12-28
    • 1970-01-01
    • 2017-01-15
    • 1970-01-01
    • 2020-09-13
    • 2011-03-19
    相关资源
    最近更新 更多