在Python2.7中并行运行函数,以便在其他函数的末尾使用函数的输出

在Python2.7中并行运行函数,以便在其他函数的末尾使用函数的输出,python,python-2.7,parallel-processing,python-multithreading,Python,Python 2.7,Parallel Processing,Python Multithreading,我是python的新手,从未使用过它的并行处理模块,如线程或多进程。我正在研究一个实时代码问题,其中一个函数的输出用作一个函数的输入。有一个大功能几乎需要3秒钟才能完成。这就像一个程序,一个人向接待处提交一些文件,当他的文件被验证时,他被引导到其他地方进行不同的检查。如果在这些检查结束时,文件验证结果可用,则程序将失败 def parallel_running_function(*args): """It is the function which will take 3 second

我是python的新手,从未使用过它的并行处理模块,如
线程
多进程
。我正在研究一个实时代码问题,其中一个函数的输出用作一个函数的输入。有一个大功能几乎需要3秒钟才能完成。这就像一个程序,一个人向接待处提交一些文件,当他的文件被验证时,他被引导到其他地方进行不同的检查。如果在这些检查结束时,文件验证结果可用,则程序将失败

def parallel_running_function(*args):
     """It is the function which will take 3 seconds to complete"""
     output = "various documents matching and verification"
     return output

def check_1(*args):
    """ check one for the task"""

def check_2(*args):
    """ check two for the task"""

def check_3(*args):
    """ check three for the task"""

def check_4(*args):
    """ check 4 for the task"""


def main_function():

    output = parallel_running_function() # need to run this function 
                                        #parallel with other functions
    output_1 = check_1()
    output_2 = check_2()
    output_3 = check_3()
    output_4 = check_4()
    if output:
       "program is successful"
    else:
        "program is failed"

    I need the output of parallel running function is here along with the other executed functions. If I don't get the output of that function here then program will be failed or ll give some wrong result.

我正在使用python 2.7。我已经阅读了多篇关于这个问题的帖子,这些帖子都是关于使用python的线程、子进程和多处理模块的,但是我没有找到这个问题的具体解决方案。我从其他帖子中得到的是,我似乎需要使用
多处理
模块。有人能告诉我如何克服这个问题吗。

你可以这样做:

import multiprocessing

pool = None

def parallel_running_function(*args):
     """It is the function which will take 3 seconds to complete"""
     output = "various documents matching and verification"
     return output

def check_1(*args):
    """ check one for the task"""

def check_2(*args):
    """ check two for the task"""

def check_3(*args):
    """ check three for the task"""

def check_4(*args):
    """ check 4 for the task"""


def main_function():

    res = pool.apply_async(parallel_running_function)

    res_1 = pool.apply_async(check_1)
    res_2 = pool.apply_async(check_2)
    res_3 = pool.apply_async(check_3)
    res_4 = pool.apply_async(check_4)

    output = res.get()
    output_1 = res_1.get()
    output_2 = res_2.get()
    output_3 = res_3.get()
    output_4 = res_4.get()

    if output:
       print "program is successful"
    else:
        print "program is failed"


if __name__ == '__main__':
    pool = multiprocessing.Pool(processes=4)
    main_function()

调用get时,主进程将被阻塞,但其他进程仍将运行。

感谢@eveatles为您提供的答案,这与我所寻找的完全相同。但是,如果运行函数的
parallel\u是类的成员或实例方法,那么为什么
response.get()
会失败呢。它可以很好地处理函数,但会给实例方法带来问题。这是因为多处理会产生新的进程而不是线程。由于对象具有无法在内存中跨进程共享的内部状态,因此必须使用函数。如果你真的想使用方法,你可以用线程来代替。非常感谢你的详细回答和回复