为 python 中的多处理函数获取 return 值
Get return value for multi-processing functions in python
我有两个并行 运行 的函数,每个函数 returns 一个值。我需要等待这两个函数完成,然后处理它们的 returns 。我如何才能在 python 中实现这一点。假设
def fun1():
#do some calculation#
return val1
def fun2():
#do some calculation#
return val2
我想让fun1和fun2并行运行然后需要计算
valsum = val1+val2
使用 concurrent.futures
:
from concurrent.futures import ProcessPoolExecutor as Executor
#from concurrent.futures import ThreadPoolExecutor as Executor # to use threads
with Executor() as executor:
future1 = executor.submit(fun1, arg1, arg2, ...)
future2 = executor.submit(fun2, arg1, arg2, ...)
val1, val2 = future1.result(), future2.result()
valsum = val1 + val2
concurrent.futures.Executor.submit
schedules the function to be executed, and returns a concurrent.futures.Future
对象。
concurrent.futures.Future.result
return 由函数编辑的 return 值 return。
from multiprocessing.pool import Pool
#from multiprocessing.pool import ThreadPool as Pool # to use threads
with multiprocessing.pool.Pool() as pool:
result1 = pool.apply_async(fun1, (arg1, arg2, ...))
result2 = pool.apply_async(fun2, (arg1, arg2, ...))
val1, val2 = result1.get(), result2.get()
valsum = val1 + val2
multiprocessing.pool.Pool.apply_async
return 一个 AsyncResult
对象,并且
AsyncResult.get
将 return 函数的 return 值一旦完成并且结果到达。
我有两个并行 运行 的函数,每个函数 returns 一个值。我需要等待这两个函数完成,然后处理它们的 returns 。我如何才能在 python 中实现这一点。假设
def fun1():
#do some calculation#
return val1
def fun2():
#do some calculation#
return val2
我想让fun1和fun2并行运行然后需要计算
valsum = val1+val2
使用 concurrent.futures
:
from concurrent.futures import ProcessPoolExecutor as Executor
#from concurrent.futures import ThreadPoolExecutor as Executor # to use threads
with Executor() as executor:
future1 = executor.submit(fun1, arg1, arg2, ...)
future2 = executor.submit(fun2, arg1, arg2, ...)
val1, val2 = future1.result(), future2.result()
valsum = val1 + val2
concurrent.futures.Executor.submit
schedules the function to be executed, and returns a concurrent.futures.Future
对象。
concurrent.futures.Future.result
return 由函数编辑的 return 值 return。
from multiprocessing.pool import Pool
#from multiprocessing.pool import ThreadPool as Pool # to use threads
with multiprocessing.pool.Pool() as pool:
result1 = pool.apply_async(fun1, (arg1, arg2, ...))
result2 = pool.apply_async(fun2, (arg1, arg2, ...))
val1, val2 = result1.get(), result2.get()
valsum = val1 + val2
multiprocessing.pool.Pool.apply_async
return 一个 AsyncResult
对象,并且
AsyncResult.get
将 return 函数的 return 值一旦完成并且结果到达。