【问题标题】:Get the parameters passed into function used a thread back获取传递给函数的参数,使用线程返回
【发布时间】:2021-11-12 20:19:07
【问题描述】:

我希望能够访问传递给已用于线程的函数的参数,以将函数的结果与传入的参数匹配。在 Python 中使用 ThreadPoolExecutor

data = [[url1, 1], [url2, 2], [url3, 3]]
lst = []

with concurrent.futures.ThreadPoolExecutor() as executor:
    results = [executor.submit(check, var1, var2) for var1, var2 in data]
    for f in concurrent.futures.as_completed(results):
        result = f.result()
        if result:
            lst.append([result, ????])

所以我想要'????'最后一行是列表“数据”中与“结果”相对应的元素。

干杯

【问题讨论】:

    标签: python multithreading threadpool threadpoolexecutor concurrent.futures


    【解决方案1】:

    您使用字典,其中键作为 Future 对象,值作为传递的参数。

    results = {executor.submit(check, var1, var2): (var1, var2) for var1, var2 in data}
    

    然后,当您想引用时,只需使用 lst.append([result, results[f]]) 之类的东西

    data = [[url1, 1], [url2, 2], [url3, 3]]
    lst = []
    
    with concurrent.futures.ThreadPoolExecutor() as executor:
        results = {executor.submit(check, var1, var2): (var1, var2) for var1, var2 in data}
        for f in concurrent.futures.as_completed(results.keys()):
            result = f.result()
            if result:
                lst.append([result, results[f]])
    

    【讨论】:

      猜你喜欢
      • 2015-07-23
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 2016-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-05
      相关资源
      最近更新 更多