多处理2个不同的函数python3

时间:2017-12-05 01:13:45

标签: python python-multiprocessing

我在Multiprocessing Python中挣扎了一段时间。我想同时运行2个独立的函数,等到两个计算完成后再继续输出两个函数。像这样:

# Function A: 
def jobA(num):   
    result=num*2
    return result

# Fuction B:        
def jobB(num):
    result=num^3
    return result

 # Parallel process function: 

{resultA,resultB}=runInParallel(jobA(num),jobB(num))

我找到了其他多处理的例子,但是他们只使用了一个函数或者没有返回输出。谁知道怎么做?非常感谢!

1 个答案:

答案 0 :(得分:2)

我建议手动创建流程(而不是作为池的一部分),并通过multiprocessing.Queue将返回值发送到主流程。这些队列可以安全且相对有效的方式共享几乎所有Python对象。

以下是一个使用您发布的工作的示例。

def jobA(num, q):
    q.put(num * 2)

def jobB(num, q):
    q.put(num ^ 3)

import multiprocessing as mp
q = mp.Queue()
jobs = (jobA, jobB)
args = ((10, q), (2, q))
for job, arg in zip(jobs, args):
    mp.Process(target=job, args=arg).start()

for i in range(len(jobs)):
    print('Result of job {} is: {}'.format(i, q.get()))

打印出来:

Result of job 0 is: 20
Result of job 1 is: 1

但是你当然可以使用这些值做任何进一步的处理。