gpt4 book ai didi

python - 并发.futures 出错说参数缺少 1 个必需的位置参数

转载 作者:行者123 更新时间:2023-12-01 01:28:03 24 4
gpt4 key购买 nike

我有一个像这样的小玩具示例

def hello(filename,suffix):                     
print(filename + str(suffix))


params = [('test.csv', 1), ('test2.csv', 2)]
ex = futures.ThreadPoolExecutor(max_workers=2)

results = ex.map(hello, params)

real_results = list(results)

当我执行这段代码时,我收到一条错误消息

类型错误:hello() 缺少 1 个必需的位置参数:'后缀'

我认为后缀在第一个线程中是 1,在第二个线程中是 2。

我在这里做错了什么?

最佳答案

通过 ex.mapparams 中的元素将作为第一个参数传递给 hello。如果您想将多个参数传递给线程函数,有几种可能性:

  1. 创建两个参数列表,一个用于第一个参数,一个用于第二个参数,并将它们都作为参数传递给 exp.map:

    params1 = ['test.csv', 'test2.csv']
    params2 = [1, 2]
    results = ex.map(hello, params1, params2)
  2. hello 获取单个参数元组,然后解压它们:

    def hello(args):
    filename, suffix = args
  3. params 列表转置并解压到 ex.map 上(实际上这与 1. 相同,无需手动转换为 params1 > 和 params2):

    ex.map(hello, *zip(*params))

关于python - 并发.futures 出错说参数缺少 1 个必需的位置参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53174056/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com