我在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))
我找到了其他多处理的例子,但是他们只使用了一个函数或者没有返回输出。谁知道怎么做?非常感谢!
答案 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
但是你当然可以使用这些值做任何进一步的处理。