假设我有两个独立的函数。我想同时调用它们,使用python的
concurrent.futures.ThreadPoolExecutor
. 有没有办法叫他们用
Executor
并确保按提交顺序返回?
我知道这是可能的
Executor.map
,但我希望并行化两个单独的函数,而不是一个具有可交互输入的函数。
我有下面的示例代码,但不能保证
fn_a
将首先返回(通过设计
wait
功能)。
from concurrent.futures import ThreadPoolExecutor, wait
import time
def fn_a():
t_sleep = 0.5
print("fn_a: Wait {} seconds".format(t_sleep))
time.sleep(t_sleep)
ret = t_sleep * 5 # Do unique work
return "fn_a: return {}".format(ret)
def fn_b():
t_sleep = 1.0
print("fn_b: Wait {} seconds".format(t_sleep))
time.sleep(t_sleep)
ret = t_sleep * 10 # Do unique work
return "fn_b: return {}".format(ret)
if __name__ == "__main__":
with ThreadPoolExecutor() as executor:
futures = []
futures.append(executor.submit(fn_a))
futures.append(executor.submit(fn_b))
complete_futures, incomplete_futures = wait(futures)
for f in complete_futures:
print(f.result())
我也很想知道有没有办法
joblib