社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

如何在Python的concurrent.futures中并发调用多个单独的函数并获得有序的结果?

Tom • 5 年前 • 1543 次点击  

假设我有两个独立的函数。我想同时调用它们,使用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

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/49333
 
1543 次点击  
文章 [ 1 ]  |  最新文章 5 年前