获取传递给函数的参数,使用线程返回

Posted

技术标签:

【中文标题】获取传递给函数的参数,使用线程返回【英文标题】: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, ????])

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

干杯

【问题讨论】:

【参考方案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]])

【讨论】:

以上是关于获取传递给函数的参数,使用线程返回的主要内容,如果未能解决你的问题,请参考以下文章

将函数返回值传递给存储过程参数

Jmeter 线程之间传递参数

返回引用类型的返回引用的好处

qtchartsetreverse卡顿

C# 多线程参数传递

横向解决方法:将参数从查询中的其他位置传递给集合返回函数